constexpr是C ++ 11中引入的修饰符,它通知编译器函数或变量的值是已知的,或者可以在编译时计算。因此,它可以在不可能的地方用作常数。
我发现有点难以理解为什么以下结果会导致编译时计算。我已经读过这个,这个,以及关于stackoverflow的更多问题告诉我以下内容......
局部常量变量不是constexpr可评估的,但无法弄清楚原因
我试图将一个int作为参数并单独操作它的字节,例如取0xDEADF00D并逐个处理每个字节:0xDE 0xAD 0xF0 0x0D为此,我做了以下...
我正在寻找一种填充std :: array的方法 T是一个非默认可构造的结构/类,N确实在编译时已知,但是很大,你不想硬编码......
如何以静态方式使用另一个constexpr数组初始化一个数组
我有一个像这样的constexpr数组:constexpr std :: array BASES_TO_CHECK = {8,16,32,64};我想做类似于:std :: array的事情 ...
我正在编写一个类来设置AVR微控制器上的串行端口。我有一个模板函数,它将cpu时钟值和所需的波特率作为参数,快速计算,验证...
从这个页面中可以看出,c ++ 11中的数学函数似乎都没有使用constexpr,而我相信所有这些函数都可以。这让我有两个问题,一个是他们为什么......
如果constexpr vs if with constant [duplicate]
如下所示:链接,如果两个if分支都有效,则:const int foo = 5; if(foo == 5){...} else {...}和const int foo = 5;如果constexpr(...
我有一个库中的constexpr类,用于创建和管理浮点数的定点表示:template <unsigned Integer,unsigned Fraction> class ...
const_cast在常量表达式中是否有效? (C ++ 14,C ++ 17)
遇到的具体问题是编译器如何处理它有一些不一致。例如,此代码(https://godbolt.org/z/08Z-zi):constexpr auto value = 1; ...
我有以下程序:#include void Init(); struct Foo {Foo(){int * p = new int; //只是为了确保Foo的ctor不是常量表达式Init(); ...
在constexpr中用工会取代reinterpret_cast - 好主意?
我使用此代码将指针转换为size_t,它在:: std :: hash函数中使用,该函数应该在编译时散列给定指针,并且因为在constexpr中不允许reinterpret_casts,...
晚上好,我必须实现一个带有constexpr函数的类,它在头文件中返回一个类成员。该成员是const并在我的构造函数中设置,因此它不会在以后更改...
可以在程序中多次定义内联函数或constexpr函数吗? [重复]
我正在阅读C ++ Primer书。对于像我这样的初学者,我发现它真的很有趣,也很容易理解。但当我达到这个主题时:“在头文件中放置内联和constexpr函数”它是......
如果函数名为constexpr,则条件为static_assert
我知道有一个constexpr()运算符的提议,但这还没有在gcc / clang中实现。我也知道使用机器代码编辑等一些技巧有一个错误:http:...
在Bjarne Stroustrup的书“The C ++ Programming Language(4th Edition)”中。 267(第10.4.5节地址常量表达式),他使用一个代码示例,其中局部变量的地址设置为...
constexpr上下文中的std :: optional赋值运算符
我在std :: optional上摸不着头脑,根据文档,它不应该有一个constexpr赋值运算符。但是,当我在gcc-8.1中尝试这个片段时,它编译并正常工作:...
我想我非常理解如何使用关键字constexpr作为简单的变量类型,但是当涉及到指向值的指针时我很困惑。我想声明一个constexpr C字符串文字,...
Clang接受以下代码,但gcc拒绝它。 void h(){} constexpr int f(){return 1; H(); } int main(){constexpr int i = f();这是错误消息:g ++ -std = c ++ 17 ...
有没有办法构造一个constexpr函数来获取double的位表示?
是否有一种标准的方法来构造一个constexpr函数,允许将double转换为64位表示:constexpr uint64_t double_to_uint64_t(double d){?????? } 以便 ...
我遇到了这个很棒的在线编辑器https://godbolt.org/,它显示了代码的汇编版本。我还在阅读有关新的C ++ 11功能的文章,并了解了constexpr。看一眼 ...