constexpr是C ++ 11中引入的修饰符,它通知编译器函数或变量的值是已知的,或者可以在编译时计算。因此,它可以在不可能的地方用作常数。
常量表达式中的对象指针是否可以始终与 nullptr 进行比较?
以下程序被简化以演示该问题。 struct A 有一个 constexpr 成员函数,它将 this 与某个指针进行比较,该指针可以是 nullptr。那么这个成员函数就是c...
根据cppreference 在常量表达式和常量初始化中,从不执行复制省略。 但实践中似乎并不总是如此。在下面的程序中,函数...
下面是一个递归 lambda 表达式,可以在运行时和常量求值期间计算斐波那契数列的值: 自动 fib = [](此自动 && f, 自动 && p) { ...
带有 std::vector 成员变量的 C++ 编译时类并在运行时使用它的数据[重复]
我正在尝试创建一个编写器类,该类用于在编译时使用 std::vector 将数据转换为二进制流,然后将其转换为 std::array 以在运行时使用。例如: #包括...
我正在尝试创建一个编写器类,该类用于在编译时使用 std::vector 将数据转换为二进制流,然后将其转换为 std::array 以在运行时使用。例如: #包括...
编译和链接如何影响 C++ 中跨多个文件的 constexpr 声明?
我试图理解C++中编译、链接和constexpr值的确定之间的关系。我知道 constexpr 值需要在编译时完全解析,但是......
在 GCC 中工作,MSVC 错误 C3615:constexpr 函数 'GPSinfo_T::GPSinfo_T' 无法产生常量表达式
我有一个非常简单的带有 constexpr ctor 的 C++ 20 结构体。可以在 GCC 最新版本上编译并运行良好,但在带有最新补丁的 MSVC 2022 上则不行。 MSVC编译器是否不正确,或者我错过了
C++ 如何处理运行时对象上的非静态成员函数指针的 constexpr 求值?
代码编译并运行,但我试图理解当 obj 未声明为 constexpr 时如何在编译时评估表达式 (obj.*funcPtr)(12) 。我希望这可能......
也许我错过了一些东西,但我找不到任何提示:C++17中是否有一个constexpr三元运算符相当于constexpr-if? 模板 类总线地址{ 民众: 明确
在 GCC 中,在 lambda 内部,我可以从非 constexpr 模板 lambda 获取 constexpr 变量,但在 Visual C++ 中不行
此代码在 gcc 中编译良好,但在 Visual C++ 中编译失败。 MCVE = https://godbolt.org/z/K7d5PEs65 int main(){ int 局部变量=0; //一些局部变量 自动羔羊=[&]() { ...
g++ 和 clang++ 对于我是否可以在编译时调用静态 constexpr 方法存在分歧。 这是一个小程序来说明区别: #包括 结构体 foo { 静态结构...
从 lambda 函数获取 constexpr 变量是可以的,但是当此类语句位于新的 lambda 中时,编译会失败(Visual C++)并且罚款(gcc)
此代码在 gcc 中编译良好,但在 Visual C++ 中编译失败。 MCVE = https://wandbox.org/permlink/SqNI85EospSrwm5T int main() { 自动 func_do1Pass2=[&]() { 返回8; }; constexpr 我...
C++23 constexpr 大小限制?迭代 0x4000 = 好的,到 0x5000 = 不是常量表达式
以下代码可以正常工作并按预期打印交集。但是,将 max_codepoint 从 0x4000 更改为 0x5000 后,它会停止工作并出现错误: ConsoleApplication1.cpp(149, 30): [C2131]
使用 c++ 的 std(::ranges)::uninitialized_... 算法是否有性能优势,是否值得不使用 constexpr?
我正在实现一个容器类型,它拥有一些我使用 std::make_unique_for_overwrite() 创建的内存。鉴于此函数专门将 std::unique_ptr 返回给 uninitial...
免责声明:这个问题有点复杂,因为它是几个问题合而为一的,但它们都与同一类概念/问题相关。 前提: constexpr 函数只能包含 s...
使用 g++ 编译器,这两个都可以正常编译: constexpr 双 d1 = 2.0 / 1.0; 常量双 d2 = 2.0 / 0.0; 但这并不: constexpr 双 d2 = 2.0 / 0.0; 编译时错误是: 呃...
将带有捕获的 lambda 传递到另一个 lambda 中,导致捕获总是发生(?)
情况 lambda h() 始终访问非 constexpr 变量 k。 如果我使用 if constexpr(false){h();} , k 将永远不会被捕获。 但是如果我将 h() 传递给另一个函数 g,例如 g(h),k 将始终...
我有一个带有非类型参数的模板A: 模板 A级 { 民众: 静态 constexpr void print() { std::cout << param << std::endl; } }; ...
CTRE 库能够使用 ctre::match<"REGEX">(text_to_search) 等语法在编译时解析和验证正则表达式。我知道这种语法仅在 C+ 中受支持...
C++ 中指向不同变量的指针是否可以相等,特别是在常量求值期间? 请考虑以下程序(自问题第一版以来已简化): constexpr b...