【发布时间】:2013-07-25 18:15:45
【问题描述】:
在最新的模板约束论文中,提出了一个约束模板参数的新工具集。此外,在 C++14 中提供了变量模板。变量模板允许定义类型参数化常量等。
没有提及这些功能如何交互。使用 pi 的典型示例,我们可以得到:
template<Integral T>
constexpr double pi(3.141592653589793238);
template<Floating_point T>
constexpr T pi(3.1415926535897932384626433832795029L);
这将强制将 C/C++ 数值从整数转换为双精度。它还可以防止使用完全不相关的类型进行实例化。 (看看这个,我们可能想用需要浮点 ctor 的东西来替换 Floating_point 以支持复数。)
我是否遗漏了其中一篇论文中的某些内容,或者正在研究中?也许它是免费提供的,不值得一提?
【问题讨论】:
-
根据this meta discussion重新标记c++1y。
-
在第一个示例中,您没有使用
Integral模板类型,而且double也不是一个整体。看起来您正在尝试专门化constexpr模板。那是你要的吗?这与约束有何关系?你是说概念吗? Concepts Lite 在 C++14 中,但这与您的示例无关。 -
我试图将变量模板专门用于整数类型以提升为双精度(这是库中的数学函数所做的)。也许我搞砸了语法。我希望 Integral 派往这个专业——而不是使用它。
-
@cdmh,Concepts Lite 不在 C++14 中
-
@JonathanWakely 真的吗?感谢您的澄清,我认为他们做到了。
标签: c++ c++14 type-constraints c++-concepts