Duplicar posibles:
How to use enable_if to enable member functions based on template parameter of classimpulso :: enable_if_c trabajar
que tienen una plantilla de clase:
template<typename T, size_t N> class Vector
Quiero habilitar específica para constructores N
, entonces lo hago:
Vector(typename boost::enable_if_c<N==2, T>::type const &e0, T const &e1) {
data[0] = e0;
data[1] = e1;
}
Pero el compilador (MSVC 2010 SP1) me da un error en lugar de aplicar SFINAE. El error es:
error C2039: 'type' : is not a member of 'boost::enable_if_c<B,T>'
with
[
B=false,
T=float
]
¿Cuál es el problema? ¿Es un problema conocido? ¿Cómo puedo arreglarlo? ¿Es la única solución para usar static_assert
?
Editar: GCC no tiene éxito, ya sea: http://ideone.com/7Ejo8
¿Se puede publicar un SSCE en ideone (y mostrarlo compilando correctamente en gcc)? –
@Ben Voigt: GCC tampoco compila. –
@Vlad Lazarenko: Pero allí no se describe muy bien cómo solucionarlo. –