Header file range/v3/detail/config.hpp

#define RANGES_ASSERT assert

#define RANGES_ENSURE_MSG(COND, MSG) ((COND) ? void() : (RANGES_ASSERT(!(true && MSG)), std::terminate()))

#define RANGES_ENSURE(COND) RANGES_ENSURE_MSG(COND, #COND)

#define RANGES_DECLTYPE_AUTO_RETURN(...) -> decltype(__VA_ARGS__)                                        { return (__VA_ARGS__); }

#define RANGES_DECLTYPE_AUTO_RETURN_NOEXCEPT(...) noexcept(noexcept(decltype(__VA_ARGS__)(__VA_ARGS__))) ->       decltype(__VA_ARGS__)                                           { return (__VA_ARGS__); }

#define RANGES_DECLTYPE_NOEXCEPT(...) noexcept(noexcept(decltype(__VA_ARGS__)(__VA_ARGS__))) ->       decltype(__VA_ARGS__)

#define RANGES_BEGIN_NAMESPACE_STD namespace std {

#define RANGES_END_NAMESPACE_STD }

#define RANGES_CXX_STATIC_ASSERT_11 200410

#define RANGES_CXX_STATIC_ASSERT_14 RANGES_CXX_STATIC_ASSERT_11

#define RANGES_CXX_STATIC_ASSERT_17 201411

#define RANGES_CXX_VARIABLE_TEMPLATES_11 0

#define RANGES_CXX_VARIABLE_TEMPLATES_14 201304

#define RANGES_CXX_ATTRIBUTE_DEPRECATED_11 0

#define RANGES_CXX_ATTRIBUTE_DEPRECATED_14 201309

#define RANGES_CXX_CONSTEXPR_11 200704

#define RANGES_CXX_CONSTEXPR_14 201304

#define RANGES_CXX_RANGE_BASED_FOR_11 200907

#define RANGES_CXX_RANGE_BASED_FOR_14 RANGES_CXX_RANGE_BASED_FOR_11

#define RANGES_CXX_RANGE_BASED_FOR_17 201603

#define RANGES_CXX_LIB_IS_FINAL_11 0

#define RANGES_CXX_LIB_IS_FINAL_14 201402

#define RANGES_CXX_RETURN_TYPE_DEDUCTION_11 0

#define RANGES_CXX_RETURN_TYPE_DEDUCTION_14 201304

#define RANGES_CXX_GENERIC_LAMBDAS_11 0

#define RANGES_CXX_GENERIC_LAMBDAS_14 201304

#define RANGES_CXX_STD_11 201103

#define RANGES_CXX_STD_14 201402

#define RANGES_CXX_THREAD_LOCAL_PRE_STANDARD 200000

#define RANGES_CXX_THREAD_LOCAL_11 RANGES_CXX_STD_11

#define RANGES_CXX_THREAD_LOCAL_14 RANGES_CXX_THREAD_LOCAL_11

#define RANGES_DIAGNOSTIC_PUSH 

#define RANGES_DIAGNOSTIC_POP 

#define RANGES_DIAGNOSTIC_IGNORE_SHADOWING 

#define RANGES_DIAGNOSTIC_IGNORE_PRAGMAS 

#define RANGES_DIAGNOSTIC_IGNORE_INDENTATION 

#define RANGES_DIAGNOSTIC_IGNORE_UNDEFINED_INTERNAL 

#define RANGES_DIAGNOSTIC_IGNORE_MISMATCHED_TAGS 

#define RANGES_DIAGNOSTIC_IGNORE_GLOBAL_CONSTRUCTORS 

#define RANGES_DIAGNOSTIC_IGNORE_SIGN_CONVERSION 

#define RANGES_DIAGNOSTIC_IGNORE_UNNEEDED_INTERNAL 

#define RANGES_CXX_FEATURE_CONCAT2(y, z) RANGES_CXX_ ## y ## _ ## z

#define RANGES_CXX_FEATURE_CONCAT(y, z) RANGES_CXX_FEATURE_CONCAT2(y, z)

#define RANGES_CXX_FEATURE(x) RANGES_CXX_FEATURE_CONCAT(x, RANGES_CXX_STD_NAME)

#define RANGES_CXX_STD_NAME 11

#define RANGES_CXX_STD RANGES_CXX_STD_11

#define RANGES_CXX_STATIC_ASSERT RANGES_CXX_FEATURE(STATIC_ASSERT)

#define RANGES_CXX_VARIABLE_TEMPLATES RANGES_CXX_FEATURE(VARIABLE_TEMPLATES)

#define RANGES_CXX_ATTRIBUTE_DEPRECATED RANGES_CXX_FEATURE(ATTRIBUTE_DEPRECATED)

#define RANGES_CXX_CONSTEXPR RANGES_CXX_FEATURE(CONSTEXPR)

#define RANGES_CXX_RANGE_BASED_FOR RANGES_CXX_FEATURE(RANGE_BASED_FOR)

#define RANGES_CXX_LIB_IS_FINAL __cpp_lib_is_final

#define RANGES_CXX_RETURN_TYPE_DEDUCTION RANGES_CXX_FEATURE(RETURN_TYPE_DEDUCTION)

#define RANGES_CXX_GENERIC_LAMBDAS RANGES_CXX_FEATURE(GENERIC_LAMBDAS)

#define RANGES_CXX_THREAD_LOCAL RANGES_CXX_FEATURE(THREAD_LOCAL)

#define RANGES_DEPRECATED(MSG) 

#define RANGES_CXX14_CONSTEXPR inline

#define RANGES_NDEBUG_CONSTEXPR inline

#define RANGES_CXX_INLINE_VARIABLES_11 0

#define RANGES_CXX_INLINE_VARIABLES_14 0

#define RANGES_CXX_INLINE_VARIABLES_17 201606

#define RANGES_CXX_INLINE_VARIABLES RANGES_CXX_FEATURE(INLINE_VARIABLES)

#define RANGES_INLINE_VARIABLE(type, name) inline namespace                       {                                                               constexpr auto& name = static_const<type>::value;       }

#define RANGES_DISABLE_WARNINGS 

#define RANGES_RE_ENABLE_WARNINGS 

namespace ranges
{
    inline namespace v3
    {
        namespace detail
        {
            namespace ebo_test
            {
                struct empty1{};
                
                struct empty2{};
                
                struct empty3{};
                
                struct refines
                : ranges::v3::detail::ebo_test::empty1, ranges::v3::detail::ebo_test::empty2, ranges::v3::detail::ebo_test::empty3
                {};
            }
            
            constexpr bool broken_ebo = sizeof(ebo_test::refines)>sizeof(ebo_test::empty1);
        }
    }
}