Hello all, i discovered that the following code doesn't compile, why i expected that it compiles fine template<typename, typename> struct F { typedef int type; }; template<typename A> struct F<A, A> { }; typedef void(*fp0)(); extern "C" typedef void (*fp1)(); int main() { F<fp0, fp1>::type i; } // diagnostic: main.cpp: In function 'int main()': main.cpp:7: error: 'type' is not a member of 'F<void (*)(), void (*)()>' main.cpp:7: error: expected ';' before 'i' The problem seems to be that it thinks the function pointer types are the same - but C++ is very clear on that they are different types.
*** This bug has been marked as a duplicate of 2316 ***