有什么方法可以用 MSVS2015 模拟编译时双常量吗?

Is there any way to emulate compile-time double constant with MSVS2015?

我知道 MSVS2013(甚至 CTP)无法处理 static constexpr double 数据成员,已确认 in this question

现在,我希望 MSVS2015 预览版至少能让我使用这个简单的结构,但遗憾的是,我遇到了同样的错误。所以下一个合乎逻辑的问题是:有没有办法用 MSVC2015 定义编译时双精度常量?

示例:

template<typename T>
struct my_constant
{
  static constexpr const T value = 42;
}

这给出了错误:

error C2864: 'my_constant<double>::value': a static data member with an in-class initializer must have non-volatile const integral type

这是 C++03 的胡言乱语。

如果编译器接受一个constexpr成员函数

static constexpr T value() {return 42;}

那应该给你一个编译时常量。

免责声明:我从未使用过此编译器,因此无法对其进行测试。