82得票1回答
什么是consteval?

显然,在C++20中,consteval将成为一个关键字。目前它的cppreference页面是空白的。它是什么以及它与constexpr有什么关系?

35得票1回答
在constexpr上下文中使用带有consteval构造函数的new表达式

struct A { consteval A() {}; }; constexpr bool g() { auto a = new A; delete a; return true; } int main() { static_asse...

25得票3回答
consteval允许在函数参数上使用static_assert吗?

目前你不能使用 static_assert 来验证一个 constexpr 函数的参数,即使它所有调用都是 constexpr 的。 这是有道理的,因为编译器仍然必须创建一个非 constexpr 的实例来处理其他模块对其的调用。 遗憾的是,即使该函数是 static 或在匿名命名空间中,这也...

20得票1回答
如果需要consteval是用来做什么的?

C++23将引入if consteval。它将用于哪些场景,它与constexpr if有何不同?

19得票1回答
consteval和constexpr在变量上的区别

constexpr 和 consteval 有什么区别吗? consteval int x1 = 2; constexpr int x2 = 5; 使用constexpr比consteval更好吗?

19得票1回答
为什么 consteval 函数允许未定义的行为?

C++中有一个非常好的常量表达式特性: 它们的计算过程不会有未定义行为(7.7.4.7): 除非遵循[引言.执行]的规则,否则表达式e是核心常量表达式,其评估将评估以下之一: ... 本文档中在[intro]到[cpp]中指定的具有未定义行为的操作[注意:例如,带符号整数溢出([expr...

14得票2回答
编译器在运行时是否允许调用立即(consteval)函数?

这可能是一个愚蠢的问题,但我很困惑。我有一种感觉,立即执行 (consteval) 函数必须在编译时执行,我们在二进制代码中无法看到它的函数体。 这篇文章明确支持了我的观点: 引用: 这意味着 [立即执行] 函数仅在编译时可见。不会为该函数发出符号,您不能获取此类函数的地址,并且调试器等工...

13得票1回答
在MSVC上无法在初始化列表中使用consteval函数

考虑以下最小化的代码片段:#include <vector> class Bar { public: constexpr Bar() {} }; consteval Bar foo() { return Bar(); } int main() { st...

11得票1回答
在C++中,是否可以在堆上创建具有consteval构造函数的类?

在下面的代码中,struct A 具有即时函数默认构造函数,并且使用 new A{} 在动态内存中创建了一个结构体对象: struct A { consteval A() {} }; int main() { new A{}; } 只有Clang接受它。G...

10得票2回答
`consteval` 委托构造函数能否从普通构造函数中调用?

在以下结构定义中,构造函数 A(int) 把它的工作委托给即时函数构造函数 A() : 在下面的代码中,我们使用了一个名为std::vector的STL容器来存储数据:struct A { int i = 0; consteval A() = default; ...