MSVC++ 2003 versus GCC.
edit2: nun tut es auch mit GCC4, dort ist das zusätzliche innere Template tödlich, da ja eigentlich der äußere Typ referenziert wird.
Todo: testen, ob MSVC auch die GCC-Variante annimmt.
#include < stdio.h > namespace A { template < typename T > class L { protected: T m_value; public: L() { init(m_value); } #if (WIN32 && !CYGWIN) templatevoid init(T2) #else // Kein Extratemplate nötig! void init(T) #endif { printf("Set, kein unterstützter Typn"); } #if (WIN32 && !CYGWIN) // Nur VisualC++ 2003 template <> void init(int) { printf("Set int"); m_value = 32; } template <> void init(char*) { printf("Set char*"); m_value = "Hallo"; } #endif }; #if (!WIN32 || CYGWIN) // Für GCC3 template <> void L< int >::init(int) { printf("Set int"); m_value = 32; } template <> void L< char* >::init(char*) { printf("Set char*"); m_value = "Hallo"; } #endif }