Back to home page

EIC code displayed by LXR

 
 

    


File indexing completed on 2025-12-18 10:00:00

0001 // Copyright (C) 2020 T. Zachary Laine
0002 //
0003 // Distributed under the Boost Software License, Version 1.0. (See
0004 // accompanying file LICENSE_1_0.txt or copy at
0005 // http://www.boost.org/LICENSE_1_0.txt)
0006 #ifndef BOOST_PARSER_DETAIL_STL_INTERFACES_CONFIG_HPP
0007 #define BOOST_PARSER_DETAIL_STL_INTERFACES_CONFIG_HPP
0008 
0009 #include <boost/parser/config.hpp>
0010 
0011 
0012 #if !BOOST_PARSER_USE_CONCEPTS
0013 #    define BOOST_PARSER_DETAIL_STL_INTERFACES_USE_CONCEPTS 0
0014 #else
0015 // This is now hard-coded to use the pre-C++20 code path.  There are a bunch
0016 // of really odd compile errorswith Clang+libstdc++ I can't be bothered to
0017 // address right now.
0018 #    define BOOST_PARSER_DETAIL_STL_INTERFACES_USE_CONCEPTS 0
0019 #endif
0020 
0021 #if defined(__cpp_explicit_this_parameter) && BOOST_PARSER_DETAIL_STL_INTERFACES_USE_CONCEPTS
0022 #define BOOST_PARSER_USE_DEDUCED_THIS 1
0023 #else
0024 #define BOOST_PARSER_USE_DEDUCED_THIS 0
0025 #endif
0026 
0027 // The inline namespaces v1, v2, and v3 represent C++14, C++20, and C++23 and
0028 // later, respectively.  v1 is inline for standards before C++20, and v2 is
0029 // inline for C++20 and later.  Note that this only applies to code for which
0030 // multiple vI namespace alternatives exist.  For example, some instances of
0031 // the v1 namespace may still be inline, if there is no v2 version of its
0032 // contents.
0033 #if !BOOST_PARSER_DETAIL_STL_INTERFACES_USE_CONCEPTS && !BOOST_PARSER_USE_DEDUCED_THIS
0034 #    define BOOST_PARSER_DETAIL_STL_INTERFACES_NAMESPACE_V1 inline namespace v1
0035 #    define BOOST_PARSER_DETAIL_STL_INTERFACES_NAMESPACE_V2 namespace v2
0036 #    define BOOST_PARSER_DETAIL_STL_INTERFACES_NAMESPACE_V3 namespace v3
0037 #elif BOOST_PARSER_DETAIL_STL_INTERFACES_USE_CONCEPTS && !BOOST_PARSER_USE_DEDUCED_THIS
0038 #    define BOOST_PARSER_DETAIL_STL_INTERFACES_NAMESPACE_V1 namespace v1
0039 #    define BOOST_PARSER_DETAIL_STL_INTERFACES_NAMESPACE_V2 inline namespace v2
0040 #    define BOOST_PARSER_DETAIL_STL_INTERFACES_NAMESPACE_V3 namespace v3
0041 #else
0042 #    define BOOST_PARSER_DETAIL_STL_INTERFACES_NAMESPACE_V1 namespace v1
0043 #    define BOOST_PARSER_DETAIL_STL_INTERFACES_NAMESPACE_V2 namespace v2
0044 #    define BOOST_PARSER_DETAIL_STL_INTERFACES_NAMESPACE_V3 inline namespace v3
0045 #endif
0046 
0047 #endif