extern "C" int strcmp(const char*, const char*); template struct S3 { template static char* h(U); }; template <> template <> char* S3::h(int) { return __PRETTY_FUNCTION__; } template <> template <> char* S3::h(int) { return __PRETTY_FUNCTION__; } int main() { if (strcmp (S3::h(7), "static char * S3::h(int)") == 0) return 0; else return 1; }