#ifndef BHO_DESCRIBE_DESCRIPTOR_BY_NAME_HPP_INCLUDED #define BHO_DESCRIBE_DESCRIPTOR_BY_NAME_HPP_INCLUDED // Copyright 2021 Peter Dimov // Distributed under the Boost Software License, Version 1.0. // https://www.boost.org/LICENSE_1_0.txt #include #include #if defined(BHO_DESCRIBE_CXX14) #include #include #include namespace bho { namespace describe { namespace detail { template using match_by_name = mp11::mp_bool; #define BHO_DESCRIBE_MAKE_NAME_IMPL2(s, k) struct _bho_name_##s##_##k { static constexpr char const * name() { return #s; } } #define BHO_DESCRIBE_MAKE_NAME_IMPL(s, k) BHO_DESCRIBE_MAKE_NAME_IMPL2(s, k) } // namespace detail #define BHO_DESCRIBE_MAKE_NAME(s) BHO_DESCRIBE_MAKE_NAME_IMPL(s, __LINE__) template using descriptor_by_name = mp11::mp_at>>; } // namespace describe } // namespace bho #endif // defined(BHO_DESCRIBE_CXX14) #endif // #ifndef BHO_DESCRIBE_DESCRIPTOR_BY_NAME_HPP_INCLUDED