在最新的模板约束论文中,提出了一个约束模板参数的新工具集。此外,在 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 以支持复数。)
我是否遗漏了其中一篇论文中的某些内容,还是正在研究中?也许它是免费的,不值得一提?