Back to home page

EIC code displayed by LXR

 
 

    


File indexing completed on 2025-04-26 08:26:32

0001 #ifndef BOOST_COMPAT_TYPE_TRAITS_HPP_INCLUDED
0002 #define BOOST_COMPAT_TYPE_TRAITS_HPP_INCLUDED
0003 
0004 // Copyright 2024 Peter Dimov
0005 // Copyright 2024 Christian Mazakas
0006 // Distributed under the Boost Software License, Version 1.0.
0007 // https://www.boost.org/LICENSE_1_0.txt
0008 
0009 #include <type_traits>
0010 
0011 namespace boost {
0012 namespace compat {
0013 
0014 template<class T> using remove_const_t = typename std::remove_const<T>::type;
0015 template<class T> using remove_cv_t = typename std::remove_cv<T>::type;
0016 template<class T> using remove_reference_t = typename std::remove_reference<T>::type;
0017 template<class T> using remove_cvref_t = remove_cv_t< remove_reference_t<T> >;
0018 
0019 template<class T> using decay_t = typename std::decay<T>::type;
0020 
0021 template<bool B, class T = void> using enable_if_t = typename std::enable_if<B, T>::type;
0022 
0023 template<bool B, class T, class F> using conditional_t = typename std::conditional<B, T, F>::type;
0024 
0025 namespace detail {
0026 
0027 template<class...> struct make_void
0028 {
0029     using type = void;
0030 };
0031 
0032 } // namespace detail
0033 
0034 template<class... T> using void_t = typename detail::make_void<T...>::type;
0035 
0036 template<class T> using add_const_t = typename std::add_const<T>::type;
0037 
0038 } // namespace compat
0039 } // namespace boost
0040 
0041 #endif // BOOST_COMPAT_TYPE_TRAITS_HPP_INCLUDED