constexpr是C ++ 11中引入的修饰符,它通知编译器函数或变量的值是已知的,或者可以在编译时计算。因此,它可以在不可能的地方用作常数。
是否可以使编译时求值函数返回与同一函数的运行时求值不同的类型?
是否可以在编译时确定对函数(主要是 constexpr 函数)的调用是否是编译时评估的,而不仅仅是创建该函数的另一个版本(就像模板一样)
我的项目在编译时出现以下错误。尝试了一切但无法解决这个问题。 错误 错误:constexpr 变量“noOfTiles”必须由常量表达式初始化 静态
我需要初始化一个uint8_t数组, 其中大部分是常量(固定标识符),一些元素编码下一节的长度,一些元素是可变的。 uint8_t 数据[] = { 0x01、0x05、0x...
为什么 constexpr 不能保证在编译期间运行? 另外,为什么添加 consteval 而不是更改 constexpr 来保证编译时执行?
我正在关注如何在 C++ 中实现常量表达式计数器教程,并尝试修复没有宏、标记或外部工具的 C++14 反射谈话限制。 基本...
我能做什么最接近将 constexpr 作为函数输入参数传递? 模板 void A::foo(int i){ ... } 模板<> void A::foo(constexpr int i){ //...
尝试将 std::bit_cast 与位域结构一起使用。为什么不是 constexpr?
我试图在编译时从位域结构中获取位掩码。我尝试过的技巧之一(对我来说看起来很有希望)是使用 std::bit_cast,因为它应该是 constexpr。 我的...
我试图在编译时检测参数是否是引用成员。它没有抓住它,我不明白为什么。 #包括 构造一个{ a(): i1(42), i2(i1){} int i1;...
我试图在编译时检测引用。它没有抓住它,我不明白为什么。 #包括 构造一个{ a(): i1(42), i2(i1){} 整数 i1; int& i2; }; 模板...
从 if constexpr 块传递的地址总是保证在“上下文”之外有效吗?
给出以下代码: #包括 #包括 模板 无效栏(T * t_ptr = nullptr){ if constexpr(!std::is_same()){ std::cout ...
我试图将函数的地址以异或形式存储在内存中,类似于广泛用于仅接受字符串的字符串的 XorStr 函数。将其存放在半
为什么在这种情况下 constexpr 不能与 const 互换?
我看过一些之前与 constexpr 相关的帖子,尤其是这篇: constexpr 和 const 有什么区别? 根据阅读该主题,我的理解是缺点......
可以将未初始化字段的对象安全地添加到 std::vector 中吗?
在下面的程序中,struct A 的默认构造函数不会初始化其字段 v。然后在常量表达式中,std::vector 被替换为 A() 对象: #包括 ...
为什么使用 constexpr 时超出范围变量的地址等于 0?
我不明白 constexpr 语义。当然,x在堆栈上分配的地址无法在编译时计算出来。 constexpr 自动 foo() { 整数x = 5; ...
我有一个类,它将整数包装成一系列只有编译器(和开发人员)知道的值,限制在运行时是未知的。该类实现了运算符,使得限制 ch...
我发现自己想要/需要使用可变参数复合类型作为模板参数。不幸的是, std::tuple<> 不是结构类型,这使得明显的方法不可行: #包括...
`constexpr`会启动一个新的常量表达式上下文的条件是什么?
我在为什么非空 `std::vector` 不允许使用 `constexpr` 说明符中提出了一个问题?之前,找到答案后,我还有另一个问题。 我测试了一下,发现是有效的
基本上,我想允许 Foo 类的客户使用基于实例化时传递给它的模板类型参数的任意值来定义其静态 constexpr 成员变量...
给定一个 constexpr 函数,如果在编译时调用该函数,是否有办法创建编译时错误,如果在运行时调用该函数,是否有返回标记值的方法? 不幸的是我...
为什么非 constexpr 函数可以在 Clang 中调用 std::format
据我所知,constexpr 函数不能调用非constexpr 函数。但是,它看起来像在 clang 中,一个 constexpr 函数可以调用 std::format() (我知道它没有 constexpr 规范......