Use operator[] rather than operator(), to avoid potential confusion from having basic_yield_context look like a function object.
diff --git a/asio/include/asio/spawn.hpp b/asio/include/asio/spawn.hpp index 3526184..7a06c1c 100644 --- a/asio/include/asio/spawn.hpp +++ b/asio/include/asio/spawn.hpp
@@ -46,7 +46,7 @@ { } - basic_yield_context operator()(asio::error_code& ec) + basic_yield_context operator[](asio::error_code& ec) { basic_yield_context tmp(*this); tmp.ec_ = &ec;
diff --git a/asio/src/examples/cpp03/spawn/echo_server.cpp b/asio/src/examples/cpp03/spawn/echo_server.cpp index 567154e..7071534 100644 --- a/asio/src/examples/cpp03/spawn/echo_server.cpp +++ b/asio/src/examples/cpp03/spawn/echo_server.cpp
@@ -70,7 +70,7 @@ while (socket_.is_open()) { asio::error_code ignored_ec; - timer_.async_wait(yield(ignored_ec)); + timer_.async_wait(yield[ignored_ec]); if (timer_.expires_from_now() <= boost::posix_time::seconds(0)) socket_.close(); } @@ -90,7 +90,7 @@ { asio::error_code ec; boost::shared_ptr<session> new_session(new session(io_service)); - acceptor.async_accept(new_session->socket(), yield(ec)); + acceptor.async_accept(new_session->socket(), yield[ec]); if (!ec) new_session->go(); } }
diff --git a/asio/src/examples/cpp11/spawn/echo_server.cpp b/asio/src/examples/cpp11/spawn/echo_server.cpp index 24add43..b777ed2 100644 --- a/asio/src/examples/cpp11/spawn/echo_server.cpp +++ b/asio/src/examples/cpp11/spawn/echo_server.cpp
@@ -57,7 +57,7 @@ while (socket_.is_open()) { asio::error_code ignored_ec; - timer_.async_wait(yield(ignored_ec)); + timer_.async_wait(yield[ignored_ec]); if (timer_.expires_from_now() <= std::chrono::seconds(0)) socket_.close(); } @@ -92,7 +92,7 @@ { asio::error_code ec; tcp::socket socket(io_service); - acceptor.async_accept(socket, yield(ec)); + acceptor.async_accept(socket, yield[ec]); if (!ec) std::make_shared<session>(std::move(socket))->go(); } });