#include <iostream>
#include <type_traits>
int main(int argc, const char *argv[])
{
std::remove_pointer<const int>::type i0 = 10; // ok. type is const int. must be initialized
std::remove_pointer<const int *>::type i1 = 10; // ok. type is const int. must be initialized.
std::remove_pointer<int const *>::type i2 = 10; // ok. type is const int. must be initialized.
std::remove_pointer<int * const>::type i3; // ok. type is int. no initialization needed
return 0;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8dHlwZV90cmFpdHM+CgppbnQgbWFpbihpbnQgYXJnYywgY29uc3QgY2hhciAqYXJndltdKQp7CiAgICBzdGQ6OnJlbW92ZV9wb2ludGVyPGNvbnN0IGludD46OnR5cGUgaTAgPSAxMDsgICAvLyBvay4gdHlwZSBpcyBjb25zdCBpbnQuIG11c3QgYmUgaW5pdGlhbGl6ZWQKICAgIHN0ZDo6cmVtb3ZlX3BvaW50ZXI8Y29uc3QgaW50ICo+Ojp0eXBlIGkxID0gMTA7IC8vIG9rLiB0eXBlIGlzIGNvbnN0IGludC4gbXVzdCBiZSBpbml0aWFsaXplZC4KICAgIHN0ZDo6cmVtb3ZlX3BvaW50ZXI8aW50IGNvbnN0ICo+Ojp0eXBlIGkyID0gMTA7IC8vIG9rLiB0eXBlIGlzIGNvbnN0IGludC4gbXVzdCBiZSBpbml0aWFsaXplZC4KICAgIHN0ZDo6cmVtb3ZlX3BvaW50ZXI8aW50ICogY29uc3Q+Ojp0eXBlIGkzOyAgICAgIC8vIG9rLiB0eXBlIGlzIGludC4gbm8gaW5pdGlhbGl6YXRpb24gbmVlZGVkCiAgICAKICAgIHJldHVybiAwOwp9Cg==