<分区>
我开始了解 C++14 带有变量模板。
template<typename T>
constexpr T pi = T(3.1415926535897932385);
我的问题是 - 当我们在普通变量上使用变量模板时?请给我一些例子。
<分区>
我开始了解 C++14 带有变量模板。
template<typename T>
constexpr T pi = T(3.1415926535897932385);
我的问题是 - 当我们在普通变量上使用变量模板时?请给我一些例子。
最佳答案
模板的特性之一是支持显式(和部分)特化。我猜这也适用于变量模板,允许您为不同的特化提供单独的初始值设定项,如
template<typename T>
constexpr T pi = T(3.1415926535897932385);
template<>
constexpr float pi = 3.1415;
template<>
constexpr MyFractionType pi = MyFractionType(22, 7); // close enough for most purposes
template<>
constexpr int pi = 3; // :)
正如评论中提到的那样,已经可以通过将变量包装到一个类中(作为静态成员)来“模板化和专门化变量”。变量模板将允许人们在不求助于基于类包装器的解决方法的情况下做到这一点。从这个意义上说,模板变量解决的问题与模板 typedef 解决的问题相同。
关于C++14 变量模板,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25411146/