MSVC 2015无法编译constexpr atan

时间:2016-06-21 18:45:12

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

我在我的项目中使用过Mingw-w64编译器。现在我用MSVC2015编译项目。以下行给出错误:

constexpr double pi = 4*std::atan(1);

错误:

error: C2131: expression did not evaluate to a constant

然而,它在mingw编译没有任何问题。

1 个答案:

答案 0 :(得分:2)

在这种情况下,MSVC就是[constexpr.functions]p1

  

本文档明确要求某些标准库函数是constexpr。 实现不得将任何标准库函数签名声明为constexpr,除非明确要求它。

正如您在我突出显示的最后一句话中所看到的,如果标准没有这样说,则不允许实现声明函数 if str(self.screens[index].name) == 'Front': self.ids.test.points = (100, 100, -300, 300)

现在标准是否说constexpratan?不,从[c.math]中的签名可以看出:

constexpr