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

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

102得票2回答
在C++20之前,使用malloc分配int类型内存是否未定义行为?

我被告知在C++20之前,以下代码存在未定义的行为:int *p = (int*)malloc(sizeof(int)); *p = 10; 那是真的吗? 争论的焦点在于在给 int 对象赋值之前,它的生命周期尚未开始 (P0593R6)。为了解决这个问题,应该使用放置 new:int *p ...

90得票2回答
C++20中的`constinit`是什么?

constinit是C++20中提出的新keyword和specifier,在P1143中被提议。 标准中提供了以下示例: const char * g() { return "dynamic initialization"; } constexpr const char * f(bool...

89得票3回答
consteval函数是否允许依赖于函数参数的模板参数?

在C++17中,这段代码是非法的:constexpr int foo(int i) { return std::integral_constant<int, i>::value; } 那是因为即使foo可以在编译时评估,编译器仍然需要生成指令以在运行时执行它,从而使模板实例...

88得票3回答
C++20的无栈协程是否存在问题?

根据以下内容,看起来C++20中的协程将是无栈的。 https://en.cppreference.com/w/cpp/language/coroutines 我有很多顾虑: 在嵌入式系统中,堆分配通常是不可接受的。 当处于低级代码时,嵌套使用co_await会很有用(我不认为无栈协程...

82得票1回答
什么是consteval?

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

80得票3回答
非默认的运算符 <=> 不生成 == 和 !=

我在C++20中使用新的太空船操作符&lt;=&gt;遇到了一个奇怪的行为。我正在使用带有/std:c++latest的Visual Studio 2019编译器。 这段代码如预期般编译通过: #include &lt;compare&gt; struct X { int Dum...

76得票2回答
为什么在C++20中我不需要在依赖类型前指定"typename"?

使用gcc 10.1编译的这段代码在C++20中编译通过,而没有在依赖类型std::vector&lt;T&gt;::iterator前使用typename关键字。为什么会编译通过?#include &lt;vector&gt; template&lt;typename T&gt; std:...

73得票2回答
C++20中的'char8_t'和我们旧版本的'char'是相同的吗?

在CPP参考文档文档中,我注意到对于char,字符类型足够大以表示任何UTF-8八位代码单元(自C++14起),而对于char8_t,它是用于UTF-8字符表示的类型,要求足够大以表示任何UTF-8代码单元(8位)。这是否意味着两者是相同的类型?还是char8_t有其他特征?

70得票3回答
在C++中限制“auto”是否有违其初衷?

在C++20中,我们现在可以将auto关键字限制为特定类型。因此,如果我有一些没有任何限制的代码,类似于以下内容:auto something(){ return 1; } int main(){ const auto x = something(); return x; } 这...