Re: [boost] [Boost.Config] Detect compiler support for std::current_exception
Hi all,
I'm working on a Boost.Exception issue [1] and I need to detect compiler support of std::current_exception. In the issue there is a suggestion to use #if __cplusplus > 199711L but that does not work for my use case (VS2015 reports __cplusplus = 199711L).
MSVC defines _MSVC_LANG for this[1]. At least, it used to. However, it would be cleaner to have a dedicated macro in Boost.Config for this.
Totally agree.
Is it possible to add a config macro for this? Or is there a good enough existing macro I can use?
I don't think there is. Something like BOOST_NO_CXX11_HDR_EXCEPTION would be useful.
I would need to detect support for std::current_exception, not the presence of header <exception>, so I would think that BOOST_NO_CXX11_CURRENT_EXCEPTION is what I need, right? So that I can #ifndef BOOST_NO_CXX11_CURRENT_EXCEPTION // I can use std::current_exception() unconditionally here #endif Should I open an issue in github for Boost.Config?
I would need to detect support for std::current_exception, not the presence of header <exception>, so I would think that BOOST_NO_CXX11_CURRENT_EXCEPTION is what I need, right?
So that I can #ifndef BOOST_NO_CXX11_CURRENT_EXCEPTION // I can use std::current_exception() unconditionally here #endif
Should I open an issue in github for Boost.Config?
By all means, but a PR would be even better ;) Best, John. --- This email has been checked for viruses by Avast antivirus software. https://www.avast.com/antivirus
On 5/29/19 6:13 PM, dariomt--- via Boost wrote:
Hi all,
I'm working on a Boost.Exception issue [1] and I need to detect compiler support of std::current_exception. In the issue there is a suggestion to use #if __cplusplus > 199711L but that does not work for my use case (VS2015 reports __cplusplus = 199711L).
MSVC defines _MSVC_LANG for this[1]. At least, it used to. However, it would be cleaner to have a dedicated macro in Boost.Config for this.
Totally agree.
Is it possible to add a config macro for this? Or is there a good enough existing macro I can use?
I don't think there is. Something like BOOST_NO_CXX11_HDR_EXCEPTION would be useful.
I would need to detect support for std::current_exception, not the presence of header <exception>, so I would think that BOOST_NO_CXX11_CURRENT_EXCEPTION is what I need, right?
BOOST_NO_CXX11_HDR_EXCEPTION, as all BOOST_NO_CXX11_HDR_* macros, detect that the header not only exists, but is usable and contains all major components described by the standard. In case of BOOST_NO_CXX11_HDR_EXCEPTION, that would mean std::exception_ptr, std::current_exception, std::rethrow_exception, std::make_exception_ptr, etc. You need at least std::exception_ptr and std::current_exception.
Should I open an issue in github for Boost.Config?
Yes, or better yet - make a PR.
participants (3)
-
Andrey Semashev
-
dariomt@gmail.com
-
John Maddock