Question: Will this work and is it legal:

```
typedef const MyClass * const MY_CONST_TYPE

```

Or do I have to break it down into 2 typedefs?

thanks

Answer: 
Nothing pevents that this typedef would be correct provided that you will place a semicolon at the end of the statement.

Here is an example

```
class MyClass {};
typedef const MyClass * const MY_CONST_TYPE;

int main() 
{
    MyClass a;
    MY_CONST_TYPE pa = &a;

    return 0;
}   

```

Or using elaborated type name you even may change the order of declarations

```
typedef const class MyClass * const MY_CONST_TYPE;
class MyClass {};

int main() 
{
    MyClass a;
    MY_CONST_TYPE pa = &a;

    return 0;
}   

```
As others have pointed out, it's perfectly valid. One option to consider in C++11 is to use the new `using` syntax, which you might find easier to read.

```
  using MY_CONST_TYPE = const MyClass* const;

```