61得票3回答
如何检查C++20支持?对于C++20,__cplusplus的值是多少?

与问题如何检查C++11支持?和C++17的__cplusplus的值是多少?有关。 我该如何查询编译器是否能够处理/设置为使用C++20? 我知道原则上可以通过以下方式查询C++版本:#if __cplusplus > ??? // C++20 code here #endif ...

60得票1回答
C++ 20中的“销毁操作符delete”是什么?

C++20引入了“摧毁operator delete”:这是一种新的operator delete重载形式,它接受一个标签类型std::destroying_delete_t参数。 这到底是什么以及何时有用?

60得票9回答
如何在CMake中使用C++20模块?

Clang 和 MSVC 已经支持来自未完成的 C++20 标准的 Modules TS。 我可以使用 CMake 或其他构建系统构建我的模块项目吗?如何操作呢? 我尝试了 build2,它支持模块并且运行良好,但是我对它的依赖管理有一个问题(更新:该问题已关闭)。

59得票2回答
我该如何编写C++代码以备C++模块化使用?

已有两个支持C++模块的编译器: Clang:http://clang.llvm.org/docs/Modules.html MS VS 2015:http://blogs.msdn.com/b/vcblog/archive/2015/12/03/c-modules-in-vs-2015-...

58得票1回答
为什么在C++20中unique_ptr不能与nullptr_t相等比较?

使用C++20的概念(concept)时,我注意到std::unique_ptr似乎无法满足std::equality_comparable_with<std::nullptr_t,...>概念。根据std::unique_ptr的定义,在C++20中应该实现以下内容: temp...

57得票5回答
为什么我必须提供“operator ==”,而“operator <=>”已经足够了?

#include &lt;compare&gt; struct A { int n; auto operator&lt;=&gt;(A const&amp; other) const { if (n &lt; other.n) { ...

55得票4回答
能否将字符串字面值用作模板参数?

在“现代C++”(C++17或更高版本)中,是否可以将字符串字面值作为参数传递给C++模板? 我知道你可以通过构造函数参数来实现这一点;我只是觉得将其作为模板参数会更方便,而不是深埋在cpp文件中。我很好奇这是否是现代C++的新功能。下面是我尝试做的伪代码示例: // Header Fil...

54得票2回答
什么是定制点对象以及如何使用它们?

[customization.point.object]),这些对象被ranges库广泛使用。 我似乎理解它们提供了一种编写自定义版本的 begin,swap,data 等函数的方式,这些函数通过ADL由标准库找到。这是正确的吗? 与用户在其自己的命名空间中为其类型定义 begin 的重载...

54得票3回答
为什么same_as概念会检查类型相等两次?

我查看了https://en.cppreference.com/w/cpp/concepts/same_as上同样概念的可能实现,发现有些奇怪的事情正在发生。 namespace detail { template&lt; class T, class U &gt; conc...

52得票1回答
C++模块系统中如何处理模板?

我正在阅读论文 C++模块化的一个模块系统,以了解C++模块,这是C++中拟议的一个功能。 我还不能完全理解这个模块体系结构如何导出模板。 有什么想法吗?