Q:

Why is const MyClass const* not valid? 

I am rather new in C++ and I get confused when trying to read this kind of prototypes. 
This prototype "builds" in Visual Studio 2012 (in a Native C++ Static library, not C++/CLI), although it doesn't make the pointer constant. 
I noticed it throws a warning, which I didn't see at first. 
C++ Visual Studio 2012
     int intTest =3;
     int intTest2 = 5;
     const int const* pointerTest = &intTest;
     pointerTest = &intTest2; //This works

     const int* const pointerTest2 = &intTest;
     pointerTest2 = &intTest2; //This doesn't build because the pointer is constant. 

I realized of my mistake because when I was trying to build this code in Linux (Eclipse with GCC 4.6.3) it throws an error:

duplicate 'const'

I wrote this instead of const MyClass* const by mistake, but I didn't notice it because Visual Studio didn't throw an error. 
Why is this syntax wrong?  I didn't write it on purpose but I would like to understand. 

A:

const decorates the term to its left, unless it's the left-most, then it decorates the term to its right. 
Rewrite your declaration using above rule is
int const const* pointerTest = &intTest;

You should write:
const int * const pointerTest = &intTest;

Or stick to the right-const style and won't get puzzled:
int const * const * const * const someEvilVariable = foo();

