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)
template
void 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
}