Errors from Boost ASIO (v1_72_0) with Visual Studio 2019 (v16.4.5) compiling in c++20 mode

Viewed 698

I have a project which uses boost ASIO (version 1_72_0) in Visual Studio 2019 (v16.4.5) and which compiles without issue when the "C++ Language Standard" property is set to c++17.

When I change this property to c++latest to experiment with some new C++20 features, I experience a gazillion (well, technically just 903) errors when compiling, a small sampling of which are pasted below.

Both Visual Studio and Boost are "fresh installs". Is this a known incompatibility or is there some other project property or preprocessor macro that I need to set?

1>C:\Program Files\Boost\boost_1_72_0\boost\asio\async_result.hpp(44,1): error C2062: type 'bool' unexpected (compiling source file AxCaptureSession.cpp)
1>C:\Program Files\Boost\boost_1_72_0\boost\asio\async_result.hpp(45,1): error C2143: syntax error: missing ';' before '{' (compiling source file AxCaptureSession.cpp)
1>C:\Program Files\Boost\boost_1_72_0\boost\asio\async_result.hpp(45,1): error C2447: '{': missing function header (old-style formal list?) (compiling source file AxCaptureSession.cpp)
1>C:\Program Files\Boost\boost_1_72_0\boost\asio\async_result.hpp(56,30): error C7568: argument list missing after assumed function template 'callable_with' (compiling source file AxCaptureSession.cpp)
1>C:\Program Files\Boost\boost_1_72_0\boost\asio\async_result.hpp(58): message : see reference to class template instantiation 'boost::asio::detail::is_completion_handler_for<T,R(Args...)>' being compiled (compiling source file AxCaptureSession.cpp)
1>C:\Program Files\Boost\boost_1_72_0\boost\bind\placeholders.hpp(54): message : see reference to class template instantiation 'boost::arg<9>' being compiled (compiling source file AxCaptureSession.cpp)
1>C:\Program Files\Boost\boost_1_72_0\boost\bind\placeholders.hpp(53): message : see reference to class template instantiation 'boost::arg<8>' being compiled (compiling source file AxCaptureSession.cpp)
1>C:\Program Files\Boost\boost_1_72_0\boost\bind\placeholders.hpp(52): message : see reference to class template instantiation 'boost::arg<7>' being compiled (compiling source file AxCaptureSession.cpp)
1>C:\Program Files\Boost\boost_1_72_0\boost\bind\placeholders.hpp(51): message : see reference to class template instantiation 'boost::arg<6>' being compiled (compiling source file AxCaptureSession.cpp)
1>C:\Program Files\Boost\boost_1_72_0\boost\bind\placeholders.hpp(50): message : see reference to class template instantiation 'boost::arg<5>' being compiled (compiling source file AxCaptureSession.cpp)
1>C:\Program Files\Boost\boost_1_72_0\boost\bind\placeholders.hpp(49): message : see reference to class template instantiation 'boost::arg<4>' being compiled (compiling source file AxCaptureSession.cpp)
1>C:\Program Files\Boost\boost_1_72_0\boost\bind\placeholders.hpp(48): message : see reference to class template instantiation 'boost::arg<3>' being compiled (compiling source file AxCaptureSession.cpp)
1>C:\Program Files\Boost\boost_1_72_0\boost\bind\placeholders.hpp(47): message : see reference to class template instantiation 'boost::arg<2>' being compiled (compiling source file AxCaptureSession.cpp)
1>C:\Program Files\Boost\boost_1_72_0\boost\bind\placeholders.hpp(46): message : see reference to class template instantiation 'boost::arg<1>' being compiled (compiling source file AxCaptureSession.cpp)
1>C:\Program Files\Boost\boost_1_72_0\boost\asio\async_result.hpp(56,2): error C2059: syntax error: '>' (compiling source file AxCaptureSession.cpp)
1>C:\Program Files\Boost\boost_1_72_0\boost\asio\async_result.hpp(57,1): error C3770: 'unknown-type': is not a valid base class (compiling source file AxCaptureSession.cpp)
1>C:\Program Files\Boost\boost_1_72_0\boost\asio\async_result.hpp(63,1): error C2062: type 'bool' unexpected (compiling source file AxCaptureSession.cpp)
1>C:\Program Files\Boost\boost_1_72_0\boost\asio\async_result.hpp(64,35): error C2065: 'T': undeclared identifier (compiling source file AxCaptureSession.cpp)
1>C:\Program Files\Boost\boost_1_72_0\boost\asio\async_result.hpp(64,11): error C2923: 'boost::asio::detail::is_completion_signature': 'T' is not a valid template type argument for parameter 'T' (compiling source file AxCaptureSession.cpp)
1>C:\Program Files\Boost\boost_1_72_0\boost\asio\async_result.hpp(64,39): error C2955: 'boost::asio::detail::is_completion_signature': use of class template requires template argument list (compiling source file AxCaptureSession.cpp)
1>C:\Program Files\Boost\boost_1_72_0\boost\asio\async_result.hpp(34): message : see declaration of 'boost::asio::detail::is_completion_signature' (compiling source file AxCaptureSession.cpp)
1>C:\Program Files\Boost\boost_1_72_0\boost\asio\async_result.hpp(69,44): error C2061: syntax error: identifier 'completion_signature' (compiling source file AxCaptureSession.cpp)
1>C:\Program Files\Boost\boost_1_72_0\boost\asio\async_result.hpp(70,1): error C2062: type 'bool' unexpected (compiling source file AxCaptureSession.cpp)
1>C:\Program Files\Boost\boost_1_72_0\boost\asio\async_result.hpp(71,37): error C2065: 'T': undeclared identifier (compiling source file AxCaptureSession.cpp)
1>C:\Program Files\Boost\boost_1_72_0\boost\asio\async_result.hpp(71,40): error C2065: 'Signature': undeclared identifier (compiling source file AxCaptureSession.cpp)
1>C:\Program Files\Boost\boost_1_72_0\boost\asio\async_result.hpp(71,11): error C2923: 'boost::asio::detail::is_completion_handler_for': 'T' is not a valid template type argument for parameter 'T' (compiling source file AxCaptureSession.cpp)
1>C:\Program Files\Boost\boost_1_72_0\boost\asio\async_result.hpp(71,11): error C2923: 'boost::asio::detail::is_completion_handler_for': 'Signature' is not a valid template type argument for parameter 'Signature' (compiling source file AxCaptureSession.cpp)
1>C:\Program Files\Boost\boost_1_72_0\boost\asio\async_result.hpp(71,52): error C2955: 'boost::asio::detail::is_completion_handler_for': use of class template requires template argument list (compiling source file AxCaptureSession.cpp)
1>C:\Program Files\Boost\boost_1_72_0\boost\asio\async_result.hpp(50): message : see declaration of 'boost::asio::detail::is_completion_handler_for' (compiling source file AxCaptureSession.cpp)
1>C:\Program Files\Boost\boost_1_72_0\boost\asio\async_result.hpp(105,37): error C2039: 'completion_signature': is not a member of 'boost::asio' (compiling source file AxCaptureSession.cpp)
1>C:\Program Files\Boost\boost_1_72_0\boost\asio\async_result.hpp(25): message : see declaration of 'boost::asio' (compiling source file AxCaptureSession.cpp)
1>C:\Program Files\Boost\boost_1_72_0\boost\asio\async_result.hpp(105,69): error C2061: syntax error: identifier 'completion_signature' (compiling source file AxCaptureSession.cpp)
1>C:\Program Files\Boost\boost_1_72_0\boost\asio\async_result.hpp(144,1): error C2061: syntax error: identifier 'completion_handler_for' (compiling source file AxCaptureSession.cpp)
1>C:\Program Files\Boost\boost_1_72_0\boost\asio\async_result.hpp(190): message : see reference to class template instantiation 'boost::asio::async_result<CompletionToken>' being compiled (compiling source file AxCaptureSession.cpp)
1>C:\Program Files\Boost\boost_1_72_0\boost\asio\async_result.hpp(144,1): error C2988: unrecognizable template declaration/definition (compiling source file AxCaptureSession.cpp)
1>C:\Program Files\Boost\boost_1_72_0\boost\asio\async_result.hpp(144,1): error C2059: syntax error: ',' (compiling source file AxCaptureSession.cpp)
1>C:\Program Files\Boost\boost_1_72_0\boost\asio\async_result.hpp(150,1): error C2334: unexpected token(s) preceding '{'; skipping apparent function body (compiling source file AxCaptureSession.cpp)
1>C:\Program Files\Boost\boost_1_72_0\boost\asio\async_result.hpp(194,11): error C2039: 'completion_signature': is not a member of 'boost::asio' (compiling source file AxCaptureSession.cpp)
1>C:\Program Files\Boost\boost_1_72_0\boost\asio\async_result.hpp(25): message : see declaration of 'boost::asio' (compiling source file AxCaptureSession.cpp)
0 Answers
Related