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. -- Summary: Language linkage should be part of the function type Product: gcc Version: 4.4.0 Status: UNCONFIRMED Severity: normal Priority: P3 Component: c++ AssignedTo: unassigned at gcc dot gnu dot org ReportedBy: schaub-johannes at web dot de GCC host triplet: i686-pc-linux-gnu GCC target triplet: i686-pc-linux-gnu http://gcc.gnu.org/bugzilla/show_bug.cgi?id=40336