我逐渐了解到C++14附带了可变模板。
template<typename T>
constexpr T pi = T(3.1415926535897932385);我的问题是--当我们使用变量模板而不是普通变量时?请给我举个例子。
发布于 2014-08-20 17:51:39
模板的一个属性是支持显式(和部分)的专门化。我猜这也适用于变量模板,允许您为不同的专门化提供单独的初始化程序,如
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; // :)正如注释中提到的,通过将变量包装到类中(作为静态成员),已经可以“临时化和专门化变量”。可变模板可以让人做到这一点,而无需诉诸基于类包装器的解决方案。从这个意义上讲,模板变量可以解决与模板类型相同的问题。
https://stackoverflow.com/questions/25411146
复制相似问题