在最新的模板约束文件中,介绍了一个约束模板参数的新工具集。另外,在C++中提供了14个可变模板。变量模板允许定义类型参数化常量等等。模板约束是否可用于变量模板?
没有提及这些功能如何交互。使用pi的规范示例,我们可以这样做:
template<Integral T>
constexpr double pi(3.141592653589793238);
template<Floating_point T>
constexpr T pi(3.1415926535897932384626433832795029L);
这将强制将C/C++数值从整数转换为double。它也会阻止用完全不相关的类型进行实例化。 (看着这个,我们可能想用一些需要浮点数的浮点数代替Floating_point来支持复数。)
我错过了其中一篇论文的东西,或者这是在作品中?也许它是免费的,不值得一提?
重新标记[标签:C++ 1Y]按照[该元讨论](HTTP://元.stackexchange.com /问题/ 177625/C14-或-C1Y)。 – Casey
在第一个例子中,您不使用'Integral'模板类型,并且'double'也不是整数。看起来你正在试图专注于一个'constexpr'模板。那是你要的吗?这与约束有什么关系?你的意思是? Concepts Lite使用C++ 14,但这与您的示例无关。 – cdmh
我正在尝试专门化整数类型的变量模板以提升为double(这是库中的数学函数)。也许我搞砸了语法。我希望Integral派遣到这个专业 - 不要使用它。 – emsr