58得票1回答
静态constexpr变量与函数的区别

在将浮点数常量声明为 static constexpr 变量和将函数声明为下面的示例中是否有区别,还是只是风格问题?class MY_PI { public: static constexpr float MY_PI_VAR = 3.14f; static constexpr ...

58得票9回答
constexpr重载

相关链接:函数返回constexpr无法编译 我认为C++11中的constexpr在实用性上存在限制,因为它无法定义两个具有相同签名但一个是constexpr,另一个不是constexpr的函数。换句话说,比如说,如果我能够拥有一个仅接受constexpr参数的constexpr std:...

58得票1回答
为什么非静态数据成员不能是constexpr?

这是有效的代码:struct S { constexpr S(int x, int y): xVal(x), yVal(y) {} constexpr S(int x): xVal(x) {} constexpr S() {} const int xVal { 0 }; ...

57得票6回答
C++11中sqrt被定义为constexpr吗?

在C++11中,std::sqrt被定义为constexpr,也就是说它可以在其他constexpr函数中或者编译时上下文如数组大小或模板参数中被合法使用。使用-std=c++0x,g++似乎允许这样做,但是考虑到c++0x/c++11支持还不完整,我不能确定是否可以将其作为权威资料。我发现互...

57得票4回答
头文件中使用constexpr

我可以在头文件中像这样定义吗? constexpr double PI=3.14; 将这个constexpr放在多个cpp文件都会包含的头文件中,是否存在任何问题? 我担心因为标准规定这个constexpr有自己的内存,把它放在头文件中并将头文件添加到多个cpp文件中,会在内存中生成多个相同值...

55得票4回答
为什么我们需要将函数标记为constexpr?

C++11允许使用带有constexpr修饰符声明的函数用于常量表达式,例如模板参数。对于可以用于constexpr的内容有严格的要求;基本上,这样的函数仅封装一个子表达式,没有其他内容。(编辑:在C++14中放宽了这一要求,但问题依然存在。) 为什么需要这个关键字呢?到底有什么好处呢? ...

54得票5回答
为什么C++11的constexpr如此严格限制?

正如您可能知道的那样,C++11引入了constexpr关键字。 C++11引入了constexpr关键字,它允许用户保证函数或对象构造函数是编译时常量。 [...] 这使得编译器可以理解和验证 [函数名称] 是一个编译时常量。 我的问题是为什么有这样严格的限制来声明函数的...

53得票4回答
一个类不能拥有自己的静态constexpr成员实例吗?

这段代码给我不完整类型的错误。问题出在哪里?一个类不允许有自己的静态成员实例吗?有没有其他方法达到同样的效果?struct Size { const unsigned int width; const unsigned int height; static const...

53得票4回答
C++编译器如何如此快速地评估递归的constexpr函数?

我一直在学习C++的constexpr函数,并实现了一个constexpr递归函数来查找第n个斐波那契数。#include <iostream> #include <fstream> #include <cmath> #include <algorit...

52得票3回答
为什么常量表达式中有未定义行为的例外?

我正在研究核心常量表达式*中允许的内容,该内容涵盖在C++标准草案第5.19节常量表达式的第2段中,其中说道: 条件表达式是核心常量表达式,除非它涉及以下之一作为可能评估的子表达式(3.2),但未评估的逻辑AND(5.14)、逻辑OR(5.15)和条件(5.16)操作的子表达式不被视为[注...