【问题标题】:C++14 Variable Templates [duplicate]C ++ 14变量模板[重复]
【发布时间】:2014-10-14 04:34:12
【问题描述】:

我开始了解 C++14 自带的变量模板

 template<typename T>
    constexpr T pi = T(3.1415926535897932385);

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

【问题讨论】:

  • 这不是一个例子吗?
  • 一个简单的例子是元素列表(其中 element 是模板类型)。 IE。模板可以为不同类型泛化一个类,从而防止代码重复。

标签: c++ c++14


【解决方案1】:

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

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; // :)

正如在 cmets 中提到的,通过将变量包装到一个类中(作为静态成员),已经可以“模板化和专门化变量”。变量模板将允许人们在不诉诸基于类包装器的解决方法的情况下做到这一点。从这个意义上说,模板变量解决了与模板类型定义相同的问题。

【讨论】:

    猜你喜欢
    • 2013-10-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-07-15
    • 2020-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-11-15
    相关资源
    最近更新 更多