Eventuali duplicati:
How to use enable_if to enable member functions based on template parameter of classboost :: enable_if_c non sembra funzionare
ho un modello di classe:
template<typename T, size_t N> class Vector
voglio consentire costruttori per specifiche N
, quindi faccio:
Vector(typename boost::enable_if_c<N==2, T>::type const &e0, T const &e1) {
data[0] = e0;
data[1] = e1;
}
Ma il compilatore (MSVC 2010 SP1) mi dà un errore invece di applicare SFINAE. L'errore è:
error C2039: 'type' : is not a member of 'boost::enable_if_c<B,T>'
with
[
B=false,
T=float
]
Qual è il problema? È un problema noto? Come posso ripararlo? È l'unica soluzione per utilizzare static_assert
?
Edit: GCC non riesce neanche: http://ideone.com/7Ejo8
Puoi pubblicare un SSCE su ideone (e mostrarlo compilare correttamente su gcc)? –
@Ben Voigt: GCC non lo compila neanche. –
@Vlad Lazarenko: Ma non è descritto molto bene come risolverlo. –