71得票2回答
为什么constexpr似乎不意味着char*的const?

constexpr显然意味着const,因此常常会看到这样的写法: constexpr int foo = 42; // no const here 然而,如果你写的是: constexpr char *const str = "foo"; 然后如果传递了-Wwrite-strin...

71得票8回答
constexpr if and static_assert

P0292R1 constexpr if已经被纳入, 有望成为C++17的一部分。它看起来很实用(可以替代SFINAE的使用),但是关于static_assert在false分支中会出现非法,无需诊断的评论让我感到担忧: Disarming static_assert declaration...

69得票4回答
constexpr是否支持lambda函数/表达式?

struct Test { static const int value = []() -> int { return 0; } (); }; 在使用gcc-4.6时,我遇到了类似这样的错误:error: function needs to be constexpr。我尝试在不同的位...

69得票2回答
什么时候应该使用 std::integral_constant 而不是 constexpr?

#include <iostream> #include <type_traits> int main(){ //creating an integral constant with constexpr constexpr unsigned int ...

69得票3回答
Constexpr 数学函数

我从这个页面注意到,C++11中的数学函数似乎都没有使用constexpr,而我认为它们所有的函数都可以使用constexpr。那么这就让我有两个问题,一个是他们为什么选择不将函数定义为constexpr。第二个对于像sqrt这样的函数,我可能可以编写自己的constexpr版本,但对于sin...

66得票2回答
为什么`std::initializer_list`没有被定义为字面类型?

这是对这个问题的后续: 是否可以声明constexpr initializer_list对象?。 自从C++14以来,std::initializer_list类的所有方法都被标记为constexpr。 似乎很自然地能够通过执行constexpr std :: initializer_lis...

65得票3回答
为什么不将函数声明为“constexpr”?

如果一个函数只由return语句组成,那么它可以被声明为constexpr,因此,如果所有参数都是constexpr,并且其主体中仅调用constexpr函数,则允许在编译时进行评估。 有什么理由不将任何这样的函数声明为constexpr吗? 例如: constexpr int sum(i...

62得票2回答
C++11 - 在constexpr函数中使用static_assert?

在一个 constexpr 函数中如何正确地执行 static_assert?例如:constexpr int do_something(int x) { static_assert(x > 0, "x must be > 0"); return x + 5; } 这不是有...

59得票3回答
何时以及为什么要在constexpr中使用静态变量?

作为免责声明,我在提问之前已经做了研究。我找到了一个类似的SO问题,但那里的答案感觉有点“稻草人”,并没有真正回答我的问题。我还参考了我的cppreference页面,但那并没有提供非常简单易懂的解释。 基本上,我仍然在学习constexpr,但目前我的理解是它要求表达式在编译时进行求值。由...

59得票6回答
C++类静态constexpr出现链接错误

我正在使用 g++-4.6.1 --std=c++0x 编译以下简单程序:#include <algorithm> struct S { static constexpr int X = 10; }; int main() { return std::min(S...