constexpr 相关问题

constexpr是C ++ 11中引入的修饰符,它通知编译器函数或变量的值是已知的,或者可以在编译时计算。因此,它可以在不可能的地方用作常数。

常量表达式中的对象指针是否可以始终与 nullptr 进行比较?

以下程序被简化以演示该问题。 struct A 有一个 constexpr 成员函数,它将 this 与某个指针进行比较,该指针可以是 nullptr。那么这个成员函数就是c...

回答 1 投票 0

持续评估期间的复制省略(例如 NRVO)

根据cppreference 在常量表达式和常量初始化中,从不执行复制省略。 但实践中似乎并不总是如此。在下面的程序中,函数...

回答 1 投票 0

递归 lambda 中斐波那契数列的编译时计算不准确

下面是一个递归 lambda 表达式,可以在运行时和常量求值期间计算斐波那契数列的值: 自动 fib = [](此自动 && f, 自动 && p) { ...

回答 1 投票 0

带有 std::vector 成员变量的 C++ 编译时类并在运行时使用它的数据[重复]

我正在尝试创建一个编写器类,该类用于在编译时使用 std::vector 将数据转换为二进制流,然后将其转换为 std::array 以在运行时使用。例如: #包括...

回答 2 投票 0

带有 std::vector 成员变量的 C++ 编译时类

我正在尝试创建一个编写器类,该类用于在编译时使用 std::vector 将数据转换为二进制流,然后将其转换为 std::array 以在运行时使用。例如: #包括...

回答 1 投票 0

编译和链接如何影响 C++ 中跨多个文件的 constexpr 声明?

我试图理解C++中编译、链接和constexpr值的确定之间的关系。我知道 constexpr 值需要在编译时完全解析,但是......

回答 1 投票 0

在 GCC 中工作,MSVC 错误 C3615:constexpr 函数 'GPSinfo_T::GPSinfo_T' 无法产生常量表达式

我有一个非常简单的带有 constexpr ctor 的 C++ 20 结构体。可以在 GCC 最新版本上编译并运行良好,但在带有最新补丁的 MSVC 2022 上则不行。 MSVC编译器是否不正确,或者我错过了

回答 1 投票 0

C++ 如何处理运行时对象上的非静态成员函数指针的 constexpr 求值?

代码编译并运行,但我试图理解当 obj 未声明为 constexpr 时如何在编译时评估表达式 (obj.*funcPtr)(12) 。我希望这可能......

回答 1 投票 0

constexpr if 的等价三元运算符?

也许我错过了一些东西,但我找不到任何提示:C++17中是否有一个constexpr三元运算符相当于constexpr-if? 模板 类总线地址{ 民众: 明确

回答 4 投票 0

在 GCC 中,在 lambda 内部,我可以从非 constexpr 模板 lambda 获取 constexpr 变量,但在 Visual C++ 中不行

此代码在 gcc 中编译良好,但在 Visual C++ 中编译失败。 MCVE = https://godbolt.org/z/K7d5PEs65 int main(){ int 局部变量=0; //一些局部变量 自动羔羊=[&]() { ...

回答 1 投票 0

可以在编译时调用静态constexpr成员函数吗?

g++ 和 clang++ 对于我是否可以在编译时调用静态 constexpr 方法存在分歧。 这是一个小程序来说明区别: #包括 结构体 foo { 静态结构...

回答 1 投票 0

从 lambda 函数获取 constexpr 变量是可以的,但是当此类语句位于新的 lambda 中时,编译会失败(Visual C++)并且罚款(gcc)

此代码在 gcc 中编译良好,但在 Visual C++ 中编译失败。 MCVE = https://wandbox.org/permlink/SqNI85EospSrwm5T int main() { 自动 func_do1Pass2=[&]() { 返回8; }; constexpr 我...

回答 1 投票 0

C++23 constexpr 大小限制?迭代 0x4000 = 好的,到 0x5000 = 不是常量表达式

以下代码可以正常工作并按预期打印交集。但是,将 max_codepoint 从 0x4000 更改为 0x5000 后,它会停止工作并出现错误: ConsoleApplication1.cpp(149, 30): [C2131]

回答 1 投票 0

使用 c++ 的 std(::ranges)::uninitialized_... 算法是否有性能优势,是否值得不使用 constexpr?

我正在实现一个容器类型,它拥有一些我使用 std::make_unique_for_overwrite() 创建的内存。鉴于此函数专门将 std::unique_ptr 返回给 uninitial...

回答 1 投票 0

C++ 编译器可以缓存 constexpr 函数的结果吗?

免责声明:这个问题有点复杂,因为它是几个问题合而为一的,但它们都与同一类概念/问题相关。 前提: constexpr 函数只能包含 s...

回答 1 投票 0

为什么在 constexpr 中禁止浮点零除?

使用 g++ 编译器,这两个都可以正常编译: constexpr 双 d1 = 2.0 / 1.0; 常量双 d2 = 2.0 / 0.0; 但这并不: constexpr 双 d2 = 2.0 / 0.0; 编译时错误是: 呃...

回答 1 投票 0

将带有捕获的 lambda 传递到另一个 lambda 中,导致捕获总是发生(?)

情况 lambda h() 始终访问非 constexpr 变量 k。 如果我使用 if constexpr(false){h();} , k 将永远不会被捕获。 但是如果我将 h() 传递给另一个函数 g,例如 g(h),k 将始终...

回答 1 投票 0

如何将 constexpr 传递给构造函数?

我有一个带有非类型参数的模板A: 模板 A级 { 民众: 静态 constexpr void print() { std::cout << param << std::endl; } }; ...

回答 1 投票 0

将字符串文字传递给模板字符数组参数

CTRE 库能够使用 ctre::match<"REGEX">(text_to_search) 等语法在编译时解析和验证正则表达式。我知道这种语法仅在 C+ 中受支持...

回答 2 投票 0

C++ 中指向不同变量的相等非空指针

C++ 中指向不同变量的指针是否可以相等,特别是在常量求值期间? 请考虑以下程序(自问题第一版以来已简化): constexpr b...

回答 1 投票 0

最新问题
© www.soinside.com 2019 - 2025. All rights reserved.