Question: <https://colab.research.google.com/notebooks/io.ipynb#scrollTo=KHeruhacFpSU>

In this notebook help it explains how to upload a file to drive and then download to Colaboratory but my files are already in drive.

Where can I find the file ID ?

```
# Download the file we just uploaded.
#
# Replace the assignment below with your file ID
# to download a different file.
#
# A file ID looks like: 1uBtlaggVyWshwcyP6kEI-y_W3P8D26sz
file_id = 'target_file_id'

```

Answer: 
[Baum mit Augen's answer](https://stackoverflow.com/a/49320892/817643) is the definitive and undisputed explanation. I just want to present another example, which doesn't require macros. Specifically, C++17 introduced the `constexpr if` construct. So you may see template code like this (bar the stupid functionality):

```
#include <type_traits>

template<typename T>
auto add_or_double(T t1, T t2) noexcept {
    if constexpr (std::is_same_v<T, int>)
        return t1 + t2;
    else
        return t1 * 2.0;
}

int main(){
    add_or_double(1, 2);
    add_or_double(1.0, 2.0);
}

```

As of writing this, GCC 8.0.1 warns me about `t2` being unused when the else branch is the instantiated one. The attribute is indispensable in a case like this too.
I find [[maybe\_unused]] is useful when you have a set of constants that define a set configuration constants that may or may not be used depending on the configuration. You are then free to change the configuration without having to define new constants and worrying about unused constants.

I use this mainly in embedded code where you have to set specific values. Otherwise enumerations are generally better.