问题标签 [c++20]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
8440 浏览

c++ - C++ 模块系统中如何处理模板?

我正在阅读论文A Module System for C++ 以了解 C++ 模块,这是 C++ 的一项提议功能。

我无法完全理解此模块架构将如何导出模板。

有任何想法吗?

0 投票
1 回答
79 浏览

c++ - 使用 std::future::unwrap 在异常传播中竞争

在n3721 上写下关于改进std::futureAPI的论文。关于未包装的期货,似乎存在异常传播竞赛。文件说

如果外部 Future 抛出异常,并且在返回的 Future 上调用 .get() ,则返回的 Future 会抛出与外部 Future 相同的异常。之所以如此,是因为内心的未来没有退出

所以我的意思是在以下情况下

我之前谈到的比赛是——会抛出哪个异常?内部std::logic_error还是外部std::bad_alloc

我弄错了吗?上面的代码中没有种族吗?

0 投票
1 回答
305 浏览

c++ - 在 std::future::unwrap() 和 std::future::get() 中竞争

对来自n3721 “std::future 和相关 API 的改进”的 C++20 中即将推出的功能的后续参考

在上面的代码中,哪个将赢得打印竞赛1th_one还是th_two


为了澄清我在说什么种族,这里有两种(潜在的)种族情况,后者是真正让我感到困惑的情况。

第一个是内在未来的设定和展开;未包装的未来应该作为内部未来的合适代理,即使实际set_value尚未被调用内部未来。因此unwrap(),无论另一端发生什么,都必须返回一个公开线程安全接口的代理。

另一种情况是,get()当它的代理已经存在于其他地方时,来自未来的 a 会发生什么,在这个例子inner_fut_unwrap中是 的代理 inner_fut_get。在这种情况下,谁应该赢得比赛?未包装的未来或通过get()对外部未来的调用获取的未来?

0 投票
2 回答
715 浏览

c++ - 为什么在概念中使用 std::forward?

我正在阅读Constraints 上的 cppreference 页面并注意到这个例子:

我很困惑他们为什么要使用std::forward. 一些尝试在模板参数中支持引用类型?难道我们不想用左值调用,当和是标量(非引用)类型时,表达式swap难道不是右值吗?forwardTU

例如,考虑到它们的Swappable实现,我希望这个程序会失败:

不幸的是,g++ 7.1.0 给了我一个内部编译器错误,这并不能说明这一点。

这里Tand Ushould beMyTypestd::forward<T>(t)should returnMyType&&都不能传递给我的swap函数。

这是错误的实现Swappable吗?我错过了什么吗?

0 投票
1 回答
463 浏览

c++ - pplawait.h/experimental/resumable for co_await 不起作用

我已经在 Windows 10.0 Visual Studio 2017(版本 15.2)上安装了我的项目(包括 cpprestsdk)从 VS2013 迁移到 VS2017,并使用 co_await 更改了 .then() 方法。我在网上读过一些东西,但实际上我不能再编译我的解决方案了。无法打开包含文件 pplawait.h 忽略未知选项“/等待”

建议?

0 投票
1 回答
66 浏览

c++ - 将约束的结合应用于参数包

给定一个简单的可变参数模板

和两个或多个概念C1C2

如何在参数包的所有元素上应用C1和的连接,例如:C2A

以上不编译。我正在寻找一种方法来指定这一点,而无需编写像C1orC2.

0 投票
0 回答
157 浏览

c++ - 联合未定义结构中的 C++ 模块模板 - VC 2017

我正在尝试将 Visual Studio 2017 的实验模块内容与模块中的模板一起使用。这是我正在尝试制作的模块的简化示例

这就是我尝试使用模块和模板结构的方式

编译给出以下信息:error C2079: 'Struct_2::x' uses undefined struct 'Struct_1<T>

我知道模块是一个实验性功能,但是,当不使用模块时,定义这样的结构可以正常工作。它说Struct_1<T>未定义,这是否意味着我需要以某种方式显式实例化模板?

我的编译器命令行如下所示:

cl /utf-8 /experimental:module MyModule.ixx /std:c++latest /W3 /Zi /MDd /EHsc main.cpp /link /OUT:test.exe /INCREMENTAL:NO

任何帮助表示赞赏。

更新

我认为这是某种 MSVC 编译器错误。我使用 Clang 编译了相同的代码,它工作正常。Clang 模块文件看起来和上面一样,除了文件扩展名是 .cppm 并且在顶部它有:

export module MyModule;

我的编译器命令行如下所示:

在使用模块之前等待 MSVC 编译器成熟一点可能是个好主意,但如果有人暂时知道解决这个问题的方法,我会很感兴趣。

谢谢

0 投票
1 回答
219 浏览

c++ - 为什么 div、ldiv 和 lldiv 不是模板?

据此

两个 div 在<cinttypes>

我宁愿看到

想法?

0 投票
1 回答
3792 浏览

c++ - C++ 的标准库将来会包含网络、字符串算法……吗?

我不得不开始在工作中使用 C++,实际上,我开始喜欢它。多亏了 Scott Meyers 的书,进入它并不难。但是我讨厌标准库中缺少(不)包含的功能。将来会不会在 D 的 Phobos 库 ( https://dlang.org/phobos/ ) 中有类似的功能集(例如)?

为什么没有处理字符串、JSON、TCP/IP、处理数组的特性的方法?我已经找到了一些关于网络等的论文,http ://en.cppreference.com/w/cpp/experimental 。但是这些功能真的会进入STL标准库?如果是这样 - 什么时候?

注意:我知道 Boost 框架。是否有关于将其合并到标准库中的讨论?

0 投票
1 回答
813 浏览

c++ - 我可以在 await_suspend 期间调用 coroutine_handle::resume 吗?

考虑以下代码:

这里worker_thread可以h.resume();在协程仍在执行时await_suspend或在协程之间await_suspend()和之间调用return

Coroutines TSresume只有在协程挂起时才能调用。

执行期间是否被视为暂停await_suspend