C++17折叠表达式语法?

问题描述我正在尝试使用紧凑文件夹表达式,但未成功。例如,下面是一个正在运行的C++17代码template<bool...B>structFold_And:std::integral_constant<bool,(B&&...)>{};template<bool...B>cons

发布:2022-10-16 标签:c++c++17fold


函数参数求值和副作用

问题描述C++20标准规定函数调用,7.6.1.3/8:参数的初始化(包括每个关联值计算和副作用)相对于任何其他参数的初始化是不确定的。不确定排序(相对于非排序)可确保影响相同内存区域的副作用不是未定义的行为。Cp首选项givesthefollowingexamples:f(i=

发布:2022-10-16 标签:c++undefined-behaviorc++17language-lawyerside-effects


复制省略和简单的可复制类型

问题描述从标准的6.7.7(临时对象)中可以看到:当将类类型X的对象传递到函数或从函数返回时,如果X至少有一个合格的复制或移动构造函数([特殊]),每个这样的构造函数都是平凡的,并且X的析构函数要么是平凡的,要么是删除的,则允许实现创建一个临时对象来保存函数参数或结果对象。临时对

发布:2022-10-16 标签:c++c++17c++20copy-elision


C++17运算符==()和运算符!=()代码在C++20中失败

问题描述我有以下示例代码:#include<assert.h>structBase{booloperator==(constBase&rhs)const{returnthis->equalTo(rhs);}virtualboolequalTo(constBase&rhs)cons

发布:2022-10-16 标签:operator-overloadingc++c++17c++20


如何使使用基类构造函数的派生类的参数演绎工作?

问题描述当派生类使用基类构造函数时,演绎似乎总是fail。然而,当基类有许多构造函数时,重新定义所有构造函数是非常笨拙的。当基类使用新的构造函数快速演变时,这也是一件痛苦的事情。这个老问题是在两年多前提出的,所以我想知道:到2020年,当c++17和c++2a可用时,有什么办法可

发布:2022-10-16 标签:c++c++17c++20


如何从CMake命令行跳过C++标准?

问题描述目前我有一个项目需要C++17,因此在CMakeLists.txt中我很早就有这样一行:set(CMAKE_CXX_STANDARD17)从命令行(cmake),偶尔我想测试一下该项目是否也可以用C++20编译。(以避免意外)。如何选择从命令行使用C++20编译?如果我这

发布:2022-10-16 标签:c++c++17c++20cmake


C++中的#Include a HTTP URL

问题描述我在Github(https://github.com/Quuxplusone/coro/blob/master/examples/pythagorean_triples_generator.cpp)上查看了一个随机的C++示例,惊讶地发现它实际上可以编译(https:/

发布:2022-10-16 标签:c++c++17c++11c++20compiler-explorer


为什么C++17中的全局内联变量和静态内联成员需要保护?

问题描述从C++17开始,可以使用inline关键字初始化头中的全局变量和静态成员。虽然我理解为什么函数中的静态变量需要保护(因为初始化即使在多线程上下文中也应该只发生一次),但我不明白为什么这些新的内联变量也要保护(您可以在这里看到:https://godbolt.org/z/

发布:2022-10-16 标签:c++c++17inline


将静态全局变量声明为内联有意义吗?

问题描述考虑全局变量(不是静态类成员!)在头文件中声明:inlinestaticinti{};对于我测试的几个编译器来说,它是有效的构造,并且实验表明,将在不同的翻译单元中创建几个不同的对象,尽管它也被声明为内联(这意味着该变量的一个实例必须存在于程序中)。那么,在这种情况下,s

发布:2022-10-16 标签:staticc++globalc++17inline


为什么其中一个std::BASIC_STRING构造函数的SFINAE如此严格?

问题描述背景在thisanswer下针对非常简单的问题开始了有关此问题的讨论。问题此简单代码意外地解析了std::basic_string的构造函数:#include<string>intmain(){std::strings{"somestringtotest",2,3};re

发布:2022-10-16 标签:c++stdc++17language-lawyerc++20