struct Bar {
enum { Special = 4 };
};
template<class T, int K> struct Foo {};
template<class T> struct Foo<T,T::Special> {};
Uso:¿Es posible especializar una plantilla usando una enumeración de miembro?
Foo<Bar> aa;
falla al compilar con gcc 4.1.2 Se queja sobre el uso de T::Special
para specilization parcial de Foo. Si Special
fuera una clase, la solución sería un nombre tipo delante de ella. ¿Hay algo equivalente para él en enumeraciones (o enteros)?
Una pregunta interesante. –
Si reemplaza T :: Special con un entero concreto (99, por ejemplo), aún no compila bajo g ++ 4.4.0: 'número incorrecto de argumentos de plantilla (1, debería ser 2)'. Me doy cuenta de que esto es un cuestión separada, pero ¿el compilador no debería aceptar esto? – TonyK