constexpr 相关问题

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

节点句柄中的constexpr

我想要求澄清标准指示的节点句柄类型的具体情况。我读了cppreference信息,其中指定了Node-handle的默认构造...

回答 1 投票 0

错误:constexpr 指针初始值设定项不为空

我有这个非常简单的程序: int 主函数(无效) { 静态 constexpr const char *const str = "你好"; } 无法编译并出现此错误: $ gcc -std=c2x str.c str.c:在函数中...

回答 1 投票 0

根据编译时常量参数运行不同的函数

我有这个函数可以用 N 个字节的重复模式填充缓冲区。 void* memsetPattern(void* buf, size_t bufSize, const void* Pattern, size_t PatternSize) { if (buf == nullptr || 模式...

回答 1 投票 0

避免评估未采用的 if-constexpr 分支

以下代码无法编译,并出现错误 no member named 'foo' in 'B',尽管这只是应在编译时丢弃的上下文中的问题。 #包括 以下代码无法编译并出现错误 no member named 'foo' in 'B',尽管这只是应在编译时丢弃的上下文中的问题。 #include <type_traits> struct A { int foo() { return 1; } }; struct B { int bar() { return 2; } }; static constexpr bool TEST = false; using T = std::conditional_t<TEST, A, B>; int main() { T t{}; if constexpr (TEST) { return t.foo(); } else { return t.bar(); } } 我该怎么做才能启用这样的代码?如果我用预处理器宏替换 constexpr,这可能会工作得很好,不是吗? https://en.cppreference.com/w/cpp/language/if对您的情况有这样的说法: 在模板之外,对废弃的语句进行全面检查 这表明您可以将其粘贴到模板中以使其正常工作: template <typename U=T> int myMain() { U t{}; if constexpr (TEST) { return t.foo(); } else { return t.bar(); } } int main() { return myMain(); }

回答 1 投票 0

类中的静态 constexpr 定义与主函数中的定义

当我尝试在主函数中定义某个变量时,我可以将变量定义为: int 主函数 () { constexpr unsigned int 变量名 = 10; } 但是,当我尝试将变量封装在

回答 1 投票 0

constexpr 数据成员和单一定义规则

我想定义一个特殊的实例,用于分支到优化的代码路径,如下所示: //------------------- 标题 ---------------------- 模板 类东西 { T值...

回答 1 投票 0

consteval 构造的对象的地址是常量表达式吗?

以下代码可以在 GCC 和 MSVC 上编译,但被 Clang 拒绝: 结构X { 常量无效 *p_; 保守 X() :p_{这个} { } }; 静态 constexpr X x{}; (https://godbolt.org/z/ExYMeT...

回答 1 投票 0

具有恰好 N 个参数的结构的构造函数,其中 N 是模板参数

我不想创建一个非常小的数学库,它对 constexpr 有很好的支持。 为了简化问题,我们在这里只讨论向量。 模板 结构 vec...

回答 1 投票 0

如何从 std::set 获取 constexpr 大小,并使用它返回一个 std::array ,其中包含 C++23 中 std::set 中的元素数量?

如何从 std::set 获取 constexpr 大小,我可以用它返回一个 std::array ,其中包含 C++23 或未来 C+ 中 std::set 中的元素数量+26,就 G++ 或 Cl 的支持而言...

回答 1 投票 0

我可以制作一个 std::set 类型的 constexpr 对象吗?

我需要一个 std::set 类型的 const 对象,它将在许多其他 cpp 文件中使用。 由于每个翻译单元的初始化顺序未定义,因此我在初始化时可能会得到一个空集...

回答 2 投票 0

`constexpr`“编译时指针”在 C++ 中如何工作?

背景 指针不能用作模板(在编译时专门化)的 T* p 值参数,因为某些对象 T obj 的内存地址 &obj 仅在运行时才知道。

回答 1 投票 0

在常量表达式中不允许读取非 constexpr 变量“p”

为什么可以通过对象 's' 直接使用方法 'func()' 来初始化 constexpr 变量('x' 或 'y'),但不能通过指针变量 'p'(对于 'z') ')?而且,该物体本身是...

回答 1 投票 0

无法创建多个 constexpr getter

我有一个包装多个 std::sets 数据的结构。我想访问要在编译时计算的集合。为此,我创建了一个模板 constexpr getter 方法来返回请求的 se...

回答 1 投票 0

有模板/constexpr/C++11方法来替换X宏吗?

有没有办法使用 C++11 功能替换 Xmacro 习惯用法,并且最好不使用预处理器?我认为可以使用元组模板,但我仍在尝试了解它们是如何工作的。

回答 2 投票 0

无法创建 constexpr getter

我有一个包装多个 std::sets 数据的结构。我想访问要在编译时计算的集合。为此,我创建了一个模板化 constexpr 方法来返回请求的集。 //

回答 1 投票 0

为什么非静态数据成员不能用constexpr?

这是有效的代码: 结构体S{ constexpr S(int x, int y): xVal(x), yVal(y) {} constexpr S(int x): xVal(x) {} 常量表达式 S() {} 常量 int xVal { 0 }; 常量 int yVal { 0 }; }; 但在这里我会

回答 1 投票 0

模板类类型的静态数据成员:constexpr 与 const constinit

我有一堂课: #包括 模板 需要 std::is_arithmetic_v && (N >= 1) 向量类 { 静态 constexpr std::size_t Dime...

回答 1 投票 0

std::bit_cast 可以应用于空对象吗?

是否允许将 std::bit_cast 应用于空类的对象,将其转换为相同大小的非空类?尤其是它是否可以在常量表达式中执行? 我很惊讶...

回答 2 投票 0

如何使用 std::generate 用值初始化 constexpr 数组

例如,如果我想要一个 constexpr std::array 在编译时用 1-300 的所有 3 的倍数初始化,我该怎么做? 我的第一个想法是使用 std::generate,有些......

回答 2 投票 0

C23 的 constexpr 中可以发生哪些新类型和操作?

C23 添加了关键字 constexpr,可用于将对象定义为编译时常量,而不是枚举或宏。例如: constexpr int x = 10; constexpr int y = x+10; // 有效的 是...

回答 1 投票 0

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