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

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

本文关键字:编译 常数吗 模拟 MSVS2015 方法 什么      更新时间:2023-10-16

我知道MSVS2013(甚至是CTP)无法处理static constexpr double数据成员,这一点在本问题中得到了证实。

现在,我希望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;}

那么这应该会给您一个编译时间常数。

免责声明:我从来没有使用过这个编译器,所以不能测试这个。