有没有办法用MSVS2015模拟编译时双倍常量?

时间:2015-02-09 08:58:36

标签: c++ c++11 visual-c++ constexpr visual-studio-2015

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

现在,我希望MSVS2015 Preview能够让我至少使用这个简单的构造,但是,我得到了同样的错误。所以逻辑上的下一个问题是:有没有办法用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 mumbo-jumbo。

1 个答案:

答案 0 :(得分:5)

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

static constexpr T value() {return 42;}

然后它应该给你一个编译时常量。

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