I'm a beginner in C++ and I'm doing one of the exercises in Stroustrup's `Programming Principles And Practice Using C++`.
This exercise wants me to experiment with legal and illegal names.

```
void illegal_names()
{
//    the compiler complains about these which made sense:
//    int double =0;
//    int if =0;
//    int void = 0;
//    int int = 0;
//    int while =0;
//    string int = "hello";
//    
//    however, this is legal and it runs without a problem:
    double string = 0.0;
    cout << string<< endl;

}

```

My question is, what makes `string` different than any other types? Are there other types that is special like `string`?