C++14 变量模板

标签 c++ c++14

<分区>

我开始了解 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/

相关文章:

c++ - 将函数作为参数传递以避免重复代码

c++ - 如何为一般情况编写流插入运算符? (也就是说,对于 `char` 和 `wchar_t` 流?)

c++ - C++ 控制台输出问题

c++ - 为什么我在删除 char* 时遇到内存异常

c++ - 为什么在传递 lambda 而不是函数指针时无法推断模板参数

c++ - 是否有类型特征显示一种类型是否可能包含其他类型的值

c++ - 为什么重载运算符不起作用?

c++ - 最小化函数选择和函数调用开销?

c++ - C++可变参数包装到void **数组

c++ - 为什么 auto 不能用于重载函数?