c++20相关内容

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

从标准的6.7.7(临时对象)中可以看到: 当将类类型X的对象传递到函数或从函数返回时,如果X至少有一个合格的复制或移动构造函数([特殊]),每个这样的构造函数都是平凡的,并且X的析构函数要么是平凡的,要么是删除的,则允许实现创建一个临时对象来保存函数参数或结果对象。临时对象分别从函数实参或返回值构造,函数的参数或返回对象被初始化,就像使用符合条件的普通构造函数复制临时对象一样(即使该构造函 ..
发布时间:2022-05-17 11:12:26 C/C++开发

指定的初始化和基类?

在C++20(最新草案)中,给出了以下代码: struct B { int mb; }; struct D : B { int md; }; 这六个表达式中哪些是格式错误的,哪些不是? /*1*/ D{42, 43} /*2*/ D{{42}, 43} /*3*/ D{42, .md = 43} /*4*/ D{{42}, .md = 43} /*5*/ D{.mb = 42, . ..
发布时间:2022-05-17 10:41:28 C/C++开发

为什么使用CRTP的std::Range::view_interface

根据cp首选项,使用奇怪的循环模板模式(CRTP)技术定义视图的助手类模板view_interface。 它们背后的设计理念是什么?与重写派生类中的虚拟基类方法相比,是否有显著优势? 推荐答案 如果您为基类提供虚函数,则它将具有这些函数。一直都是。它永远不能不具有这些函数,并且从它派生的每个类都将继承这些函数。 view_interface具有empty函数当且仅当该类型的范围 ..
发布时间:2022-05-17 10:25:23 C/C++开发

VS2019中的C++20时序解析问题(最新)

我有一个使用dat.h库在C++14下工作的函数,但我将我的程序转换为使用C++20,但它不再工作。请问我做错了什么? 我的C++14/dat.h代码如下: #include // latest, installed via vcpkg #include auto StringToUnix(const std::string& sourc ..
发布时间:2022-05-17 10:16:07 C/C++开发

如何在c++20中使用g++中的模块?

我阅读了此链接https://gcc.gnu.org/wiki/cxx-modules,并尝试从此网站复制以下示例。我已经知道这个编译器部分支持模块系统。(注意:我使用的是Windows) // hello.cc module; #include #include export module hello; export void greete ..
发布时间:2022-05-17 10:06:00 C/C++开发

是否检查范围中的元素是否可以移动?

我正在尝试C++20的Range接口,并且我添加了一个构造函数,该构造函数接受类容器类型的Range。 class element { ... }; class myclass { public: template myclass(Iter first, Iter last) : els(first, last) { } tem ..
发布时间:2022-05-17 09:40:30 C/C++开发

可能C++工作草案的措辞有缺陷(整数转换排名规则)

我在working draft of standard C++中发现了一个可能的矛盾。首先我介绍事实,最后是我的问题。 建立整数折算等级时,[conv.rank]/1.1表示 没有两个带符号的整数类型[...]应具有相同的整数 转换等级,即使它们具有相同的表示形式。 [basic.fundamental]/8表示: 类型wchar_t是具有实现定义的不同类型 带符号或无符号 ..
发布时间:2022-05-17 09:32:00 C/C++开发

未计算上下文中的lambdas(需要表达式)

我知道关于这个话题有几个问题,但请听我说完。 我知道我们可以在未评估的上下文中使用无捕获lambdas(如decltype),但是可以捕获的lambdas怎么办? 我在当前的C++标准中找不到任何可以表明这是C++20以后的问题的东西,但我绝不是语言律师。 我所看到的是,主要的编译器在their results方面有所不同。 这些概念有效吗? template ..
发布时间:2022-05-17 09:26:15 C/C++开发

STD::BIT_CAST和STD::START_LIFEST_AS之间有什么有用的区别吗?

std::bit_cast显然是在c++20中引入的。而std::start_lifetime_as是在c++23中建议的(来自P0593R5)。由于它们似乎都要求所涉及的数据类型无论如何都是微不足道的,那么一旦引入后者,还需要前者吗? 对于没有提供有关这些新功能的更多信息,提前表示歉意。我是在看了cppcon 2019关于打字双关语的讲座后才听说他们的,而且我在Google上找不到太多关于 ..
发布时间:2022-05-17 09:15:03 C/C++开发

像for_each这样的并行算法与周围的代码同步吗?

这是在思考Thread sanitizer warnings after using parallel std::for_each时出现的。 具有并行执行策略的std::for_each算法可以在实现创建的工作线程中执行代码。这些线程是否与调用线程对for_each的调用和返回同步,或者类似的情况?常识似乎表明它们应该这样做,但我在C++20标准中找不到保证。 考虑以下简单示例(try ..
发布时间:2022-05-17 09:08:03 C/C++开发

如何删除C++概念

我正在尝试实现一个小型网络库来学习概念,并且我正在尝试找到一种方法来定义简洁的概念,而不必在依赖的概念上携带模板参数。例如,我有以下概念: template concept bool Value = true; template concept bool Buffer = requires(BufferT buf) ..
发布时间:2022-05-17 09:00:43 C/C++开发