Esto a VS2010sp1 no compila (que se compila con gcc 4.6 embargo):nombretipo fuera de plantilla
template<class T>
struct Upcast;
template<>
struct Upcast<signed char>
{
typedef signed short type;
};
template<>
struct Upcast<char>
{
typedef typename std::conditional<std::is_signed<char>::value,short, unsigned short>::type type;
};
int main()
{
Upcast<char>::type a;
return 0;
}
error de VS:
Error 1 error C2899: typename cannot be used outside a template declaration
¿Qué equipo tiene la razón? VS o gcc?
¿Qué significa? – Nawaz
GCC también proporciona el error al compilar sin '-std = C++ 0x'. – kennytm
@KennyTM gracias, es bueno saberlo. ¿Qué versión de GCC usas? Tengo GCC4.6.0, que acepta mi muestra de código en el modo C++ 03 incluso con '-pedantic'. –