针对几个可能的参数(类型名称)的专门化类

Ria*_*iaD 2 c++ templates c++11

我有一个模板类,唯一的模板参数是typename.

template<typename T>
class Reader{
    ...
}
Run Code Online (Sandbox Code Playgroud)

现在我想为每个整数类型专门化它,例如:

template<typename T - integral>
class Reader{
    //another code
}
Run Code Online (Sandbox Code Playgroud)

我怎样才能做到这一点?

R. *_*des 5

你可以只是一个额外的默认布尔参数:

template<typename T, bool IsIntegral = std::is_integral<T>::value>
class Reader{ // primary template, used for non-integrals
    ...
}

template<typename T>
class Reader<T, true> { // specialization for integral types
    ...
}
Run Code Online (Sandbox Code Playgroud)

  • 你的意思是你无法改变`Reader`主模板?如果是这样,那你就不走运了. (2认同)