C++ C++;17可恢复/等待:它也可以与boost::future一起使用吗?
在C++17中,有一个美好的未来,就像C#的C++ C++;17可恢复/等待:它也可以与boost::future一起使用吗?,c++,boost,c++17,C++,Boost,C++17,在C++17中,有一个美好的未来,就像C#的wait std::future<int> get_answer() { return std::async(std::launch::async, [] { return 42; }); } std::future<void> do_something() resumable { // ... int a = await get_answer(); // ... } 您链接的论文()明确指出,
wait
std::future<int> get_answer()
{
return std::async(std::launch::async, [] { return 42; });
}
std::future<void> do_something() resumable
{
// ...
int a = await get_answer();
// ...
}
您链接的论文()明确指出,只有std::future
和std::shared\u future
被接受为可恢复
函数的返回类型:
可恢复功能的返回类型必须为未来或共享未来
. 对T的限制是
由std::future定义,不是本提案,但T必须是可复制或可移动类型,或“void”。它也必须是
可以构造一个不带参数的T变量;也就是说,它必须有一个可访问(隐式)或
外植体
如果是类类型,则为默认构造函数
然而,提案的第4节(泛化
)提议取消退货类型限制。返回的类型应为具有以下限制的任何类型:
一元运算符await
的操作数可以是任何类型的S
(“S最终持有一个T”),并满足以下条件:
get
,该函数最终将生成类型为T的值,或引发异常,然后
接受一个单参数函数对象,该函数对象接受一个参数S
,S&
,或常量S
。一旦传递到然后
,该参数所持有的值必须立即可通过调用get
进行检索S
有一个bool
-返回函数已准备就绪()
指示是否已保存值,则wait
的实现可以更有效目前,讨论仍在进行中。如果通用化被接受,则
可恢复
函数将能够返回boost::future
。否则,它将被限制在std::future
和std::shared\u future
我认为这在C++14中不存在。C++14中没有等待或异步。什么?不是C++14吗?你不能对任何事情说“在C++17中”,因为没有一个草稿可以称为“C++17”。最新的草案是C++14,并且没有包含任何附加类的更新草案。。。因此,除了C++14中已有的内容外,“在C++17中”没有其他内容。这个问题似乎是离题的,因为它是关于猜测的。它属于论坛。这个答案已经过时了。
boost::future<int> get_answer()
{
return boost::async(boost::launch::async, [] { return 42; });
}
boost::future<void> do_something() resumable
{
// ...
int a = await get_answer();
// ...
}