C++ 无法使用boost::asio::yield\u上下文编译boost::asio::spawn程序

C++ 无法使用boost::asio::yield\u上下文编译boost::asio::spawn程序,c++,c++17,boost-asio,C++,C++17,Boost Asio,我想使用boost::asio同时从多个boost::processes读取stdout和stderr。但是,我在boost::asio中遇到编译问题,可以重构以下未编译的最小示例: #include <boost/asio.hpp> #include <boost/asio/spawn.hpp> int main() { boost::asio::io_context ios; boost::asio::spawn(ios, [

我想使用
boost::asio
同时从多个
boost::process
es读取
stdout
stderr
。但是,我在
boost::asio
中遇到编译问题,可以重构以下未编译的最小示例:

#include <boost/asio.hpp>
#include <boost/asio/spawn.hpp>

int main() {
    boost::asio::io_context ios;
    boost::asio::spawn(ios,
            [](boost::asio::yield_context ctx) {
            });
    ios.run();
    return 0;
}

是的,这是boost特定版本中缺少的间接包含。看到了

或者

  • 升级到boost 1.73
  • 包括相关标题:
#包括
#包括
#包括
#包括
int main(){
boost::asio::io\u上下文ios;
boost::asio::spawn(ios、,
[](boost::asio::yield\u context ctx){
});
ios.run();
返回0;
}

是的,这是boost特定版本中缺少的间接包含。看到了

或者

  • 升级到boost 1.73
  • 包括相关标题:
#包括
#包括
#包括
#包括
int main(){
boost::asio::io\u上下文ios;
boost::asio::spawn(ios、,
[](boost::asio::yield\u context ctx){
});
ios.run();
返回0;
}

我记得在特定版本的boost中看到过这一点。你能升级到更新的版本吗?哦,等等。也许我当时通过加入
boost/range.hpp
解决了这个问题。我手上再也没有1.72了,我记得在boost的特定版本中看到过这个。你能升级到更新的版本吗?哦,等等。也许我当时通过加入
boost/range.hpp
解决了这个问题。我手边再也没有1.72了
In file included from /usr/include/boost/coroutine/coroutine.hpp:10,
                 from /usr/include/boost/coroutine/all.hpp:11,
                 from /usr/include/boost/asio/spawn.hpp:19,
                 from [...]/main.cpp:3:
/usr/include/boost/coroutine/asymmetric_coroutine.hpp: In function ‘typename boost::coroutines::pull_coroutine<R>::iterator boost::coroutines::begin(boost::coroutines::pull_coroutine<Arg>&)’
/usr/include/boost/coroutine/asymmetric_coroutine.hpp:2364:17: error: ‘begin’ is not a member of ‘boost’
 2364 | { return boost::begin( c); }
#include <boost/asio.hpp>
#include <boost/range/begin.hpp>
#include <boost/range/end.hpp>
#include <boost/asio/spawn.hpp>

int main() {
    boost::asio::io_context ios;
    boost::asio::spawn(ios,
            [](boost::asio::yield_context ctx) {
            });
    ios.run();
    return 0;
}