template<typename T>
std::istream & read(std::istream & istr, T value,
typename std::enable_if<std::is_pod<T>::value>::type* = 0)
{
return istr.read( reinterpret_cast<char*>(&value), sizeof(T));
}
或者
template<typename T>
typename std::enable_if<std::is_pod<T>::value, std::istream>::type &
read(std::istream & istr, T value)
{
return istr.read( reinterpret_cast<char*>(&value), sizeof(T));
}
您的方法不起作用的原因是,如果您知道参数的类型,那么它不足以确定T。如果…怎么办
enable_if
template<int N, typename T> struct A { typedef int type; };
任何
T
在里面
<std::is_pod<T>::value, T>
一般来说,
由
...T...::type
称为非推导上下文,不能用于推导
.