template<typename T>
std::istream & read(std::istream & istr, typename std::enable_if<std::is_pod<T>::value, T>::type & value)
{
return istr.read(reinterpret_cast<char*>(&value), sizeof(T));
}
int main()
{
int x;
read(cin, x); // error here
}
error C2783: 'std::istream &read(std::istream &,std::enable_if<std::tr1::is_pod<_Ty>::value,T>::type &)' : could not deduce template argument for 'T'
Cela fonctionne si je spécifie lire <int>. Y at-il un moyen de l'obtenir pour déduire le type de l'argument?Pourquoi le type ne peut-il pas être déduit dans cette fonction de modèle?
Parfait, merci. –
Vous dites "en général", y a-t-il un cas spécifique autrement? – GManNickG
@GMan Je ne peux pas penser à un autre cas. Fixé. –