问题标签 [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.
c++ - 使用 std::future::unwrap 在异常传播中竞争
在n3721 上写下关于改进std::future
API的论文。关于未包装的期货,似乎存在异常传播竞赛。文件说
如果外部 Future 抛出异常,并且在返回的 Future 上调用 .get() ,则返回的 Future 会抛出与外部 Future 相同的异常。之所以如此,是因为内心的未来没有退出
所以我的意思是在以下情况下
我之前谈到的比赛是——会抛出哪个异常?内部std::logic_error
还是外部std::bad_alloc
?
我弄错了吗?上面的代码中没有种族吗?
c++ - 在 std::future::unwrap() 和 std::future::get() 中竞争
对来自n3721 “std::future 和相关 API 的改进”的 C++20 中即将推出的功能的后续参考
在上面的代码中,哪个将赢得打印竞赛1
? th_one
还是th_two
?
为了澄清我在说什么种族,这里有两种(潜在的)种族情况,后者是真正让我感到困惑的情况。
第一个是内在未来的设定和展开;未包装的未来应该作为内部未来的合适代理,即使实际set_value
尚未被调用内部未来。因此unwrap()
,无论另一端发生什么,都必须返回一个公开线程安全接口的代理。
另一种情况是,get()
当它的代理已经存在于其他地方时,来自未来的 a 会发生什么,在这个例子inner_fut_unwrap
中是 的代理 inner_fut_get
。在这种情况下,谁应该赢得比赛?未包装的未来或通过get()
对外部未来的调用获取的未来?
c++ - 为什么在概念中使用 std::forward?
我正在阅读Constraints 上的 cppreference 页面并注意到这个例子:
我很困惑他们为什么要使用std::forward
. 一些尝试在模板参数中支持引用类型?难道我们不想用左值调用,当和是标量(非引用)类型时,表达式swap
难道不是右值吗?forward
T
U
例如,考虑到它们的Swappable
实现,我希望这个程序会失败:
不幸的是,g++ 7.1.0 给了我一个内部编译器错误,这并不能说明这一点。
这里T
and U
should beMyType
和std::forward<T>(t)
should returnMyType&&
都不能传递给我的swap
函数。
这是错误的实现Swappable
吗?我错过了什么吗?
c++ - pplawait.h/experimental/resumable for co_await 不起作用
我已经在 Windows 10.0 Visual Studio 2017(版本 15.2)上安装了我的项目(包括 cpprestsdk)从 VS2013 迁移到 VS2017,并使用 co_await 更改了 .then() 方法。我在网上读过一些东西,但实际上我不能再编译我的解决方案了。无法打开包含文件 pplawait.h 忽略未知选项“/等待”
建议?
c++ - 将约束的结合应用于参数包
给定一个简单的可变参数模板
和两个或多个概念C1
等C2
如何在参数包的所有元素上应用C1
和的连接,例如:C2
A
以上不编译。我正在寻找一种方法来指定这一点,而无需编写像C1orC2
.
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 编译器成熟一点可能是个好主意,但如果有人暂时知道解决这个问题的方法,我会很感兴趣。
谢谢
c++ - C++ 的标准库将来会包含网络、字符串算法……吗?
我不得不开始在工作中使用 C++,实际上,我开始喜欢它。多亏了 Scott Meyers 的书,进入它并不难。但是我讨厌标准库中缺少(不)包含的功能。将来会不会在 D 的 Phobos 库 ( https://dlang.org/phobos/ ) 中有类似的功能集(例如)?
为什么没有处理字符串、JSON、TCP/IP、处理数组的特性的方法?我已经找到了一些关于网络等的论文,http ://en.cppreference.com/w/cpp/experimental 。但是这些功能真的会进入STL标准库?如果是这样 - 什么时候?
注意:我知道 Boost 框架。是否有关于将其合并到标准库中的讨论?
c++ - 我可以在 await_suspend 期间调用 coroutine_handle::resume 吗?
考虑以下代码:
这里worker_thread
可以h.resume();
在协程仍在执行时await_suspend
或在协程之间await_suspend()
和之间调用return
。
Coroutines TS说resume
只有在协程挂起时才能调用。
执行期间是否被视为暂停await_suspend
?