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

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

31得票2回答
一个显式删除的析构函数是否会被隐式标记为constexpr?

当显式地 默认 析构函数(例如:struct s { ~s() = default; };)时,似乎该类型仍然可以在 constexpr 上下文中使用。但是,当显式地 删除 析构函数(例如:struct s { ~s() = delete; };)时,Clang 不再认为该类型适用于 cons...

8得票1回答
标准库std::array的推断指南

在C++17和C++20的工作草案中,类模板std::array的推导指南被定义如下。 template<class T, class... U> array(T, U...) -> array<T, 1 + sizeof...(U)>; 例如,这个声明的结...

20得票2回答
std::atomic和std::condition_variable wait、notify_*方法之间的区别

我在查看“原子操作库”时,发现了一个新的C++20特性:原子“等待(wait)”和“通知(notify_)”方法。我很好奇它们与std::condition_variable的“等待(wait)”和“通知(notify_)”方法的区别是什么。

26得票3回答
什么特征/概念可以保证对对象进行内存设置是明确定义的?

假设我定义了一个名为zero_initialize()的函数: template<class T> T zero_initialize() { T result; std::memset(&result, 0, sizeof(result)); r...

10得票1回答
“-fno-char8_t”的MSVC等效选项是什么?

在C++20中,u8字符串字面量基于char8_t类型。它们故意不再转换为char const*: const char* str = u8"Hall\u00f6chen \u2603"; // no longer valid in C++20 当迁移到C++20时,最终目标是完全使用新...

16得票2回答
在临时范围上使用基于范围的for循环

由于valgrind中出现了一些分段错误和警告信息,我发现这段代码是不正确的,并且在for-range循环中存在某种悬空引用。#include<numeric> #include<vector> auto f(){ std::vector<std::ve...

11得票3回答
C++20中的模块与传统头文件相比,能否减少编译时间?

假设我们有一个名为foo.ixx的模块接口源文件,在其中定义了模块foo。我们使用import foo; 在许多不同的cpp文件中包含。与传统的头文件foo.h在许多不同的cpp文件中包含相比,是否会减少编译时间?如果编译时间缩短,原因是什么?

7得票1回答
从C++20开始,持有或传递非可寻址函数

C++20增加了“可寻址函数”规则 16.5.4.2.1 [namespace.std]/6,其中规定: 如果F表示一个标准库函数([global.functions])、标准库静态成员函数或标准库函数模板的实例化,则除非F被指定为“可寻址函数”,否则如果C++程序显式或隐式地尝试形成对F的...

109得票2回答
C++20是否要求将源代码存储在文件中?

有点奇怪的问题,然而,如果我记得正确的话,C++源代码不需要文件系统来存储它的文件。 通过摄像头扫描手写纸张的编译器将是一种符合规范的实现方式。虽然实际上没有太多意义。 然而,C++20现在通过 file_name 添加了源位置信息。这是否意味着源代码现在应该始终存储在文件中?