I was able to eliminate most of the error messages during compilation by modifying the contents of boost\asio\detail\config.hpp.
I changed this line from:
# define BOOST_ASIO_CONCEPT concept bool
to
# define BOOST_ASIO_CONCEPT concept
After the above change, there are still two error messages from boost\asio\async_result.hpp lines 70 and 492. The issue in these lines is they are defining a concept that is also using a concept in one of their arguments which I think is not allowed by the standard.
I am not up to speed yet with concept definitions therefore I have not been able to resolve this remaining issue.
From: Leo Carreon
Sent: Tuesday, December 24, 2019 2:37 PM
To: Boost Users Mailing List
Subject: Boost 1.72.0 build fail with Visual Studio 2019 16.4
Hi Boost Users,
I am building Boost 1.72.0 in 64-bit mode with the flag /std:c++latest using Visual Studio 2019 16.4.2 and I am encountering the following issues:
.\boost/asio/async_result.hpp(44): error C2062: type 'bool' unexpected
.\boost/asio/async_result.hpp(45): error C2143: syntax error: missing ';' before '{'
.\boost/asio/async_result.hpp(45): error C2447: '{': missing function header (old-style formal list?)
.\boost/asio/async_result.hpp(56): error C7568: argument list missing after assumed function template 'callable_with'
.\boost/asio/async_result.hpp(58): note: see reference to class template instantiation 'boost::asio::detail::is_completion_handler_for' being compiled
.\boost/asio/async_result.hpp(56): error C2059: syntax error: '>'
.\boost/asio/async_result.hpp(57): error C3770: 'unknown-type': is not a valid base class
.\boost/asio/async_result.hpp(63): error C2062: type 'bool' unexpected
.\boost/asio/async_result.hpp(64): error C2065: 'T': undeclared identifier
.\boost/asio/async_result.hpp(64): error C2923: 'boost::asio::detail::is_completion_signature': 'T' is not a valid template type argument for parameter 'T'
.\boost/asio/async_result.hpp(64): error C2955: 'boost::asio::detail::is_completion_signature': use of class template requires template argument list
.\boost/asio/async_result.hpp(34): note: see declaration of 'boost::asio::detail::is_completion_signature'
.\boost/asio/async_result.hpp(69): error C2061: syntax error: identifier 'completion_signature'
.\boost/asio/async_result.hpp(70): error C2062: type 'bool' unexpected
.\boost/asio/async_result.hpp(71): error C2065: 'T': undeclared identifier
.\boost/asio/async_result.hpp(71): error C2065: 'Signature': undeclared identifier
.\boost/asio/async_result.hpp(71): error C2923: 'boost::asio::detail::is_completion_handler_for': 'T' is not a valid template type argument for parameter 'T'
.\boost/asio/async_result.hpp(71): error C2923: 'boost::asio::detail::is_completion_handler_for': 'Signature' is not a valid template type argument for parameter 'Signature'
.\boost/asio/async_result.hpp(71): error C2955: 'boost::asio::detail::is_completion_handler_for': use of class template requires template argument list
.\boost/asio/async_result.hpp(50): note: see declaration of 'boost::asio::detail::is_completion_handler_for'
.\boost/asio/async_result.hpp(105): error C2039: 'completion_signature': is not a member of 'boost::asio'
.\boost/asio/async_result.hpp(25): note: see declaration of 'boost::asio'
.\boost/asio/async_result.hpp(105): error C2061: syntax error: identifier 'completion_signature'
.\boost/asio/async_result.hpp(144): error C2061: syntax error: identifier 'completion_handler_for'
.\boost/asio/async_result.hpp(190): note: see reference to class template instantiation 'boost::asio::async_result<CompletionToken>' being compiled
.\boost/asio/async_result.hpp(144): error C2988: unrecognizable template declaration/definition
.\boost/asio/async_result.hpp(144): error C2059: syntax error: ','
.\boost/asio/async_result.hpp(150): error C2334: unexpected token(s) preceding '{'; skipping apparent function body
.\boost/asio/async_result.hpp(194): error C2039: 'completion_signature': is not a member of 'boost::asio'
.\boost/asio/async_result.hpp(25): note: see declaration of 'boost::asio'
.\boost/asio/async_result.hpp(194): error C2061: syntax error: identifier 'completion_signature'
.\boost/asio/async_result.hpp(195): error C2065: 'Signature': undeclared identifier
.\boost/asio/async_result.hpp(196): error C2977: 'boost::asio::async_result': too many template arguments
.\boost/asio/async_result.hpp(107): note: see declaration of 'boost::asio::async_result'
.\boost/asio/async_result.hpp(198): error C2913: explicit specialization; 'boost::asio::async_result' is not a specialization of a class template
.\boost/asio/async_result.hpp(205): error C2039: 'completion_signature': is not a member of 'boost::asio'
.\boost/asio/async_result.hpp(25): note: see declaration of 'boost::asio'
.\boost/asio/async_result.hpp(205): error C2061: syntax error: identifier 'completion_signature'
.\boost/asio/async_result.hpp(211): error C2065: 'Signature': undeclared identifier
.\boost/asio/async_result.hpp(251): note: see reference to class template instantiation 'boost::asio::async_completion<CompletionToken>' being compiled
.\boost/asio/async_result.hpp(250): error C2065: 'Signature': undeclared identifier
.\boost/asio/async_result.hpp(250): error C2955: 'boost::asio::async_result': use of class template requires template argument list
.\boost/asio/async_result.hpp(195): note: see declaration of 'boost::asio::async_result'
.\boost/asio/async_result.hpp(258): error C2955: 'boost::asio::async_result': use of class template requires template argument list
.\boost/asio/async_result.hpp(195): note: see declaration of 'boost::asio::async_result'
.\boost/asio/async_result.hpp(259): note: see reference to class template instantiation 'boost::asio::detail::async_result_helper' being compiled
.\boost/asio/async_result.hpp(288): error C2672: 'boost::asio::detail::async_result_initiate_memfn_helper': no matching overloaded function found
.\boost/asio/async_result.hpp(292): note: see reference to class template instantiation 'boost::asio::detail::async_result_has_initiate_memfn' being compiled
.\boost/asio/async_result.hpp(290): error C3206: 'boost::asio::detail::async_result_initiate_memfn_helper': invalid template argument for 'T', missing template argument list on class template 'boost::asio::async_result'
.\boost/asio/async_result.hpp(281): note: see declaration of 'boost::asio::detail::async_result_initiate_memfn_helper'
.\boost/asio/async_result.hpp(290): error C3206: 'boost::asio::detail::async_result_initiate_memfn_helper': invalid template argument for '<unnamed-symbol>', missing template argument list on class template 'boost::asio::async_result'
.\boost/asio/async_result.hpp(278): note: see declaration of 'boost::asio::detail::async_result_initiate_memfn_helper'
.\boost/asio/async_result.hpp(350): error C2039: 'completion_signature': is not a member of 'boost::asio'
.\boost/asio/async_result.hpp(25): note: see declaration of 'boost::asio'
.\boost/asio/async_result.hpp(350): error C2061: syntax error: identifier 'completion_signature'
.\boost/asio/async_result.hpp(353): error C2065: 'Signature': undeclared identifier
.\boost/asio/async_result.hpp(353): error C2923: 'boost::asio::detail::async_result_has_initiate_memfn': 'Signature' is not a valid template type argument for parameter 'Signature'
.\boost/asio/async_result.hpp(354): error C2760: syntax error: unexpected token '>', expected 'expression'
.\boost/asio/async_result.hpp(359): error C2065: 'Initiation': undeclared identifier
.\boost/asio/async_result.hpp(359): error C2065: 'initiation': undeclared identifier
.\boost/asio/async_result.hpp(360): error C2065: 'token': undeclared identifier
.\boost/asio/async_result.hpp(361): error C2065: 'Args': undeclared identifier
.\boost/asio/async_result.hpp(361): warning C4346: 'boost::asio::detail::async_result_has_initiate_memfn::value': dependent name is not a type
.\boost/asio/async_result.hpp(361): note: prefix with 'typename' to indicate a type
.\boost/asio/async_result.hpp(361): error C2988: unrecognizable template declaration/definition
.\boost/asio/async_result.hpp(361): error C2059: syntax error: '...'
.\boost/asio/async_result.hpp(362): error C2143: syntax error: missing ';' before '{'
.\boost/asio/async_result.hpp(362): error C2447: '{': missing function header (old-style formal list?)
.\boost/asio/async_result.hpp(370): error C2039: 'completion_signature': is not a member of 'boost::asio'
.\boost/asio/async_result.hpp(25): note: see declaration of 'boost::asio'
.\boost/asio/async_result.hpp(370): error C2061: syntax error: identifier 'completion_signature'
.\boost/asio/async_result.hpp(373): error C2065: 'Signature': undeclared identifier
.\boost/asio/async_result.hpp(373): error C2923: 'boost::asio::detail::async_result_has_initiate_memfn': 'Signature' is not a valid template type argument for parameter 'Signature'
.\boost/asio/async_result.hpp(374): error C2065: 'Signature': undeclared identifier
.\boost/asio/async_result.hpp(375): error C2065: 'Initiation': undeclared identifier
.\boost/asio/async_result.hpp(375): error C2065: 'initiation': undeclared identifier
.\boost/asio/async_result.hpp(376): error C2065: 'token': undeclared identifier
.\boost/asio/async_result.hpp(377): error C2065: 'Args': undeclared identifier
.\boost/asio/async_result.hpp(377): warning C4346: 'boost::asio::detail::async_result_has_initiate_memfn::value': dependent name is not a type
.\boost/asio/async_result.hpp(377): note: prefix with 'typename' to indicate a type
.\boost/asio/async_result.hpp(377): error C2988: unrecognizable template declaration/definition
.\boost/asio/async_result.hpp(377): error C2059: syntax error: '...'
.\boost/asio/async_result.hpp(378): error C2143: syntax error: missing ';' before '{'
.\boost/asio/async_result.hpp(378): error C2447: '{': missing function header (old-style formal list?)
.\boost/asio/async_result.hpp(483): error C7568: argument list missing after assumed function template 'completion_handler_for'
.\boost/asio/async_result.hpp(487): note: see reference to class template instantiation 'boost::asio::detail::initiation_archetype<Signature>' being compiled
.\boost/asio/async_result.hpp(484): error C2061: syntax error: identifier 'CompletionHandler'
.\boost/asio/async_result.hpp(491): error C2061: syntax error: identifier 'completion_signature'
.\boost/asio/async_result.hpp(492): error C2062: type 'bool' unexpected
.\boost/asio/async_result.hpp(493): error C2143: syntax error: missing ';' before '{'
.\boost/asio/async_result.hpp(493): error C2447: '{': missing function header (old-style formal list?)
.\boost/asio/post.hpp(56): error C2039: 'completion_token_for': is not a member of 'boost::asio'
.\boost/asio/post.hpp(27): note: see declaration of 'boost::asio'
.\boost/asio/post.hpp(56): error C2061: syntax error: identifier 'completion_token_for'
.\boost/asio/post.hpp(56): error C2988: unrecognizable template declaration/definition
.\boost/asio/post.hpp(56): error C2059: syntax error: '>'
.\boost/asio/post.hpp(94): error C2039: 'completion_token_for': is not a member of 'boost::asio'
.\boost/asio/post.hpp(27): note: see declaration of 'boost::asio'
.\boost/asio/post.hpp(94): error C2061: syntax error: identifier 'completion_token_for'
.\boost/asio/post.hpp(95): error C2988: unrecognizable template declaration/definition
.\boost/asio/post.hpp(95): error C2059: syntax error: '>'
.\boost/asio/post.hpp(107): error C2039: 'completion_token_for': is not a member of 'boost::asio'
.\boost/asio/post.hpp(27): note: see declaration of 'boost::asio'
.\boost/asio/post.hpp(107): error C2061: syntax error: identifier 'completion_token_for'
.\boost/asio/post.hpp(108): error C2988: unrecognizable template declaration/definition
.\boost/asio/post.hpp(108): error C2059: syntax error: '>'
.\boost/asio/impl/post.hpp(81): error C2039: 'completion_token_for': is not a member of 'boost::asio'
.\boost/asio/impl/post.hpp(26): note: see declaration of 'boost::asio'
.\boost/asio/impl/post.hpp(81): error C2061: syntax error: identifier 'completion_token_for'
.\boost/asio/impl/post.hpp(81): error C2988: unrecognizable template declaration/definition
.\boost/asio/impl/post.hpp(81): error C2059: syntax error: '>'
.\boost/asio/impl/post.hpp(84): error C2143: syntax error: missing ';' before '{'
.\boost/asio/impl/post.hpp(84): error C2447: '{': missing function header (old-style formal list?)
.\boost/asio/impl/post.hpp(90): error C2039: 'completion_token_for': is not a member of 'boost::asio'
.\boost/asio/impl/post.hpp(26): note: see declaration of 'boost::asio'
.\boost/asio/impl/post.hpp(90): error C2061: syntax error: identifier 'completion_token_for'
.\boost/asio/impl/post.hpp(90): error C2988: unrecognizable template declaration/definition
.\boost/asio/impl/post.hpp(90): error C2059: syntax error: '>'
.\boost/asio/impl/post.hpp(94): error C2143: syntax error: missing ';' before '{'
.\boost/asio/impl/post.hpp(94): error C2447: '{': missing function header (old-style formal list?)
.\boost/asio/impl/post.hpp(100): error C2039: 'completion_token_for': is not a member of 'boost::asio'
.\boost/asio/impl/post.hpp(26): note: see declaration of 'boost::asio'
.\boost/asio/impl/post.hpp(100): error C2061: syntax error: identifier 'completion_token_for'
.\boost/asio/impl/post.hpp(100): error C2988: unrecognizable template declaration/definition
.\boost/asio/impl/post.hpp(100): error C2059: syntax error: '>'
.\boost/asio/impl/post.hpp(105): error C2143: syntax error: missing ';' before '{'
.\boost/asio/impl/post.hpp(105): error C2447: '{': missing function header (old-style formal list?)
.\boost/asio/detail/buffer_sequence_adapter.hpp(106): error C2955: 'boost::asio::detail::buffer_sequence_adapter_base': use of class template requires template argument list
.\boost/asio/detail/buffer_sequence_adapter.hpp(30): note: see declaration of 'boost::asio::detail::buffer_sequence_adapter_base'
.\boost/asio/detail/buffer_sequence_adapter.hpp(208): note: see reference to class template instantiation 'boost::asio::detail::buffer_sequence_adapter' being compiled
.\boost/asio/detail/buffer_sequence_adapter.hpp(116): error C2143: syntax error: missing ';' before '*'
.\boost/asio/detail/buffer_sequence_adapter.hpp(116): fatal error C1003: error count exceeds 100; stopping compilation
Has anyone else encountered the same issues and how to resolve them?
It appears that the macro BOOST_ASIO_CONCEPT is the one causing the issue. This macro seems to have the value “concept bool” which causes the complaint from the compiler.
Kind regards,
Leo