#ifndef BOOST_COMPAT_TYPE_TRAITS_HPP_INCLUDED #define BOOST_COMPAT_TYPE_TRAITS_HPP_INCLUDED // Copyright 2024 Peter Dimov // Copyright 2024-2025 Christian Mazakas // Distributed under the Boost Software License, Version 1.0. // https://www.boost.org/LICENSE_1_0.txt #include namespace boost { namespace compat { template using add_lvalue_reference_t = typename std::add_lvalue_reference::type; template using add_rvalue_reference_t = typename std::add_rvalue_reference::type; template using remove_const_t = typename std::remove_const::type; template using remove_cv_t = typename std::remove_cv::type; template using remove_reference_t = typename std::remove_reference::type; template using remove_cvref_t = remove_cv_t< remove_reference_t >; template using remove_pointer_t = typename std::remove_pointer::type; template using decay_t = typename std::decay::type; template using enable_if_t = typename std::enable_if::type; template using conditional_t = typename std::conditional::type; namespace detail { template struct make_void { using type = void; }; } // namespace detail template using void_t = typename detail::make_void::type; template using add_const_t = typename std::add_const::type; template struct type_identity { using type = T; }; } // namespace compat } // namespace boost #endif // BOOST_COMPAT_TYPE_TRAITS_HPP_INCLUDED