首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >C++14变量模板

C++14变量模板
EN

Stack Overflow用户
提问于 2014-08-20 17:40:30
回答 1查看 1.3K关注 0票数 1

我逐渐了解到C++14附带了可变模板。

代码语言:javascript
复制
 template<typename T>
    constexpr T pi = T(3.1415926535897932385);

我的问题是--当我们使用变量模板而不是普通变量时?请给我举个例子。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-08-20 17:51:39

模板的一个属性是支持显式(和部分)的专门化。我猜这也适用于变量模板,允许您为不同的专门化提供单独的初始化程序,如

代码语言:javascript
复制
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; // :)

正如注释中提到的,通过将变量包装到类中(作为静态成员),已经可以“临时化和专门化变量”。可变模板可以让人做到这一点,而无需诉诸基于类包装器的解决方案。从这个意义上讲,模板变量可以解决与模板类型相同的问题。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/25411146

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档