From f51a528591d5fa6ca97d45cd055ff118d1b294d2 Mon Sep 17 00:00:00 2001 From: Peter Dimov Date: Tue, 16 May 2017 21:52:06 +0300 Subject: [PATCH] Add _t aliases --- doc/add_const.qbk | 4 +++- doc/add_cv.qbk | 4 +++- doc/add_lvalue_reference.qbk | 4 +++- doc/add_pointer.qbk | 4 +++- doc/add_rvalue_reference.qbk | 4 +++- doc/add_volatile.qbk | 4 +++- doc/common_type.qbk | 1 + doc/conditional.qbk | 1 + doc/copy_cv.qbk | 4 +++- doc/decay.qbk | 4 +++- doc/floating_point_promotion.qbk | 4 +++- doc/integral_promotion.qbk | 4 +++- doc/make_signed.qbk | 4 +++- doc/make_unsigned.qbk | 4 +++- doc/promote.qbk | 2 ++ doc/remove_all_extents.qbk | 4 +++- doc/remove_const.qbk | 4 +++- doc/remove_cv.qbk | 4 +++- doc/remove_extent.qbk | 4 +++- doc/remove_pointer.qbk | 2 ++ doc/remove_reference.qbk | 4 +++- doc/remove_volatile.qbk | 4 +++- include/boost/type_traits/add_const.hpp | 6 ++++++ include/boost/type_traits/add_cv.hpp | 6 ++++++ include/boost/type_traits/add_lvalue_reference.hpp | 6 ++++++ include/boost/type_traits/add_pointer.hpp | 6 ++++++ include/boost/type_traits/add_rvalue_reference.hpp | 6 ++++++ include/boost/type_traits/add_volatile.hpp | 6 ++++++ include/boost/type_traits/conditional.hpp | 6 ++++++ include/boost/type_traits/copy_cv.hpp | 6 ++++++ include/boost/type_traits/decay.hpp | 6 ++++++ include/boost/type_traits/floating_point_promotion.hpp | 6 ++++++ include/boost/type_traits/integral_promotion.hpp | 6 ++++++ include/boost/type_traits/make_signed.hpp | 6 ++++++ include/boost/type_traits/make_unsigned.hpp | 6 ++++++ include/boost/type_traits/promote.hpp | 6 ++++++ include/boost/type_traits/remove_all_extents.hpp | 6 ++++++ include/boost/type_traits/remove_const.hpp | 6 ++++++ include/boost/type_traits/remove_cv.hpp | 5 +++++ include/boost/type_traits/remove_extent.hpp | 6 ++++++ include/boost/type_traits/remove_pointer.hpp | 6 ++++++ include/boost/type_traits/remove_reference.hpp | 5 +++++ include/boost/type_traits/remove_volatile.hpp | 5 +++++ 43 files changed, 183 insertions(+), 18 deletions(-) diff --git a/doc/add_const.qbk b/doc/add_const.qbk index c90cb9d..8f81025 100644 --- a/doc/add_const.qbk +++ b/doc/add_const.qbk @@ -12,7 +12,9 @@ { typedef __below type; }; - + + template using add_const_t = typename add_const::type; // C++11 and above + __type The same type as `T const` for all `T`. __std_ref 3.9.3. diff --git a/doc/add_cv.qbk b/doc/add_cv.qbk index f1cf590..3c6622a 100644 --- a/doc/add_cv.qbk +++ b/doc/add_cv.qbk @@ -12,7 +12,9 @@ { typedef __below type; }; - + + template using add_cv_t = typename add_cv::type; // C++11 and above + __type The same type as `T const volatile` for all `T`. __std_ref 3.9.3. diff --git a/doc/add_lvalue_reference.qbk b/doc/add_lvalue_reference.qbk index dc8de51..b3be371 100644 --- a/doc/add_lvalue_reference.qbk +++ b/doc/add_lvalue_reference.qbk @@ -12,7 +12,9 @@ { typedef __below type; }; - + + template using add_lvalue_reference_t = typename add_lvalue_reference::type; // C++11 and above + __type If `T` names an object or function type then the member typedef `type` shall name `T&`; otherwise, if `T` names a type ['rvalue reference to U] then the member typedef type shall name `U&`; otherwise, type shall name `T`. diff --git a/doc/add_pointer.qbk b/doc/add_pointer.qbk index 9c8dc77..72b9c2b 100644 --- a/doc/add_pointer.qbk +++ b/doc/add_pointer.qbk @@ -12,7 +12,9 @@ { typedef __below type; }; - + + template using add_pointer_t = typename add_pointer::type; // C++11 and above + __type The same type as `remove_reference::type*`. The rationale for this template diff --git a/doc/add_rvalue_reference.qbk b/doc/add_rvalue_reference.qbk index 24d460f..c490615 100644 --- a/doc/add_rvalue_reference.qbk +++ b/doc/add_rvalue_reference.qbk @@ -12,7 +12,9 @@ { typedef __below type; }; - + + template using add_rvalue_reference_t = typename add_rvalue_reference::type; // C++11 and above + __type If `T` names an object or function type then the member typedef type shall name `T&&`; otherwise, type shall name `T`. ['\[Note: This rule reflects the semantics of reference collapsing. For example, when a type `T` names diff --git a/doc/add_volatile.qbk b/doc/add_volatile.qbk index 206d7b5..9a30696 100644 --- a/doc/add_volatile.qbk +++ b/doc/add_volatile.qbk @@ -12,7 +12,9 @@ { typedef __below type; }; - + + template using add_volatile_t = typename add_volatile::type; // C++11 and above + __type The same type as `T volatile` for all `T`. __std_ref 3.9.3. diff --git a/doc/common_type.qbk b/doc/common_type.qbk index 801033f..3bf6058 100644 --- a/doc/common_type.qbk +++ b/doc/common_type.qbk @@ -15,6 +15,7 @@ __header ` #include ` or ` #include struct common_type; + template using common_type_t = typename common_type::type; // C++11 and above } diff --git a/doc/conditional.qbk b/doc/conditional.qbk index ae6e80f..b0aea68 100644 --- a/doc/conditional.qbk +++ b/doc/conditional.qbk @@ -14,6 +14,7 @@ __header ` #include ` or ` #include struct __conditional; + template using conditional_t = typename conditional::type; // C++11 and above } If B is true, the member typedef type shall equal T. If B is false, the member typedef type shall equal U. diff --git a/doc/copy_cv.qbk b/doc/copy_cv.qbk index 9f733a0..26a6e21 100644 --- a/doc/copy_cv.qbk +++ b/doc/copy_cv.qbk @@ -12,7 +12,9 @@ { typedef __below type; }; - + + template using copy_cv_t = typename copy_cv::type; // C++11 and above + __type [^T /cv/], where /cv/ are the cv-qualifiers of `U`. __header ` #include ` or ` #include ` diff --git a/doc/decay.qbk b/doc/decay.qbk index aa30a0a..cfa00cb 100644 --- a/doc/decay.qbk +++ b/doc/decay.qbk @@ -12,7 +12,9 @@ { typedef __below type; }; - + + template using decay_t = typename decay::type; // C++11 and above + __type Let `U` be the result of `remove_reference::type`, then if `U` is an array type, the result is `remove_extent::type*`, otherwise if `U` is a function type then the result is `U*`, otherwise the result is `U`. diff --git a/doc/floating_point_promotion.qbk b/doc/floating_point_promotion.qbk index ab3858c..2769586 100644 --- a/doc/floating_point_promotion.qbk +++ b/doc/floating_point_promotion.qbk @@ -12,7 +12,9 @@ { typedef __below type; }; - + + template using floating_point_promotion_t = typename floating_point_promotion::type; // C++11 and above + __type If floating point promotion can be applied to an rvalue of type `T`, then applies floating point promotion to `T` and keeps cv-qualifiers of `T`, otherwise leaves `T` unchanged. diff --git a/doc/integral_promotion.qbk b/doc/integral_promotion.qbk index a83d49b..1b69792 100644 --- a/doc/integral_promotion.qbk +++ b/doc/integral_promotion.qbk @@ -12,7 +12,9 @@ { typedef __below type; }; - + + template using integral_promotion_t = typename integral_promotion::type; // C++11 and above + __type If integral promotion can be applied to an rvalue of type `T`, then applies integral promotion to `T` and keeps cv-qualifiers of `T`, otherwise leaves `T` unchanged. diff --git a/doc/make_signed.qbk b/doc/make_signed.qbk index cba7b19..fcc1774 100644 --- a/doc/make_signed.qbk +++ b/doc/make_signed.qbk @@ -12,7 +12,9 @@ { typedef __below type; }; - + + template using make_signed_t = typename make_signed::type; // C++11 and above + __type If T is a signed integer type then the same type as T, if T is an unsigned integer type then the corresponding signed type. Otherwise if T is an enumerated or diff --git a/doc/make_unsigned.qbk b/doc/make_unsigned.qbk index 2e6cb41..a4d7774 100644 --- a/doc/make_unsigned.qbk +++ b/doc/make_unsigned.qbk @@ -12,7 +12,9 @@ { typedef __below type; }; - + + template using make_unsigned_t = typename make_unsigned::type; // C++11 and above + __type If T is a unsigned integer type then the same type as T, if T is an signed integer type then the corresponding unsigned type. Otherwise if T is an enumerated or diff --git a/doc/promote.qbk b/doc/promote.qbk index 0ce8370..4e4029c 100644 --- a/doc/promote.qbk +++ b/doc/promote.qbk @@ -13,6 +13,8 @@ typedef __below type; }; + template using promote_t = typename promote::type; // C++11 and above + __type If integral or floating point promotion can be applied to an rvalue of type `T`, then applies integral and floating point promotions to `T` and keeps cv-qualifiers of `T`, otherwise leaves `T` unchanged. See also diff --git a/doc/remove_all_extents.qbk b/doc/remove_all_extents.qbk index be9d309..0b72a09 100644 --- a/doc/remove_all_extents.qbk +++ b/doc/remove_all_extents.qbk @@ -12,7 +12,9 @@ { typedef __below type; }; - + + template using remove_all_extents_t = typename remove_all_extents::type; // C++11 and above + __type If `T` is an array type, then removes all of the array bounds on `T`, otherwise leaves `T` unchanged. diff --git a/doc/remove_const.qbk b/doc/remove_const.qbk index ea3b7e1..356af79 100644 --- a/doc/remove_const.qbk +++ b/doc/remove_const.qbk @@ -12,7 +12,9 @@ { typedef __below type; }; - + + template using remove_const_t = typename remove_const::type; // C++11 and above + __type The same type as `T`, but with any /top level/ const-qualifier removed. __std_ref 3.9.3. diff --git a/doc/remove_cv.qbk b/doc/remove_cv.qbk index c7a296b..d0dd334 100644 --- a/doc/remove_cv.qbk +++ b/doc/remove_cv.qbk @@ -12,7 +12,9 @@ { typedef __below type; }; - + + template using remove_cv_t = typename remove_cv::type; // C++11 and above + __type The same type as `T`, but with any /top level/ cv-qualifiers removed. __std_ref 3.9.3. diff --git a/doc/remove_extent.qbk b/doc/remove_extent.qbk index fe5f3f1..dbcfee9 100644 --- a/doc/remove_extent.qbk +++ b/doc/remove_extent.qbk @@ -12,7 +12,9 @@ { typedef __below type; }; - + + template using remove_extent_t = typename remove_extent::type; // C++11 and above + __type If `T` is an array type, then removes the topmost array bound, otherwise leaves `T` unchanged. diff --git a/doc/remove_pointer.qbk b/doc/remove_pointer.qbk index 7f0af89..cbc3fa3 100644 --- a/doc/remove_pointer.qbk +++ b/doc/remove_pointer.qbk @@ -13,6 +13,8 @@ typedef __below type; }; + template using remove_pointer_t = typename remove_pointer::type; // C++11 and above + __type The same type as `T`, but with any pointer modifier removed. Note that pointers to members are left unchanged: removing the pointer decoration would result in an invalid type. diff --git a/doc/remove_reference.qbk b/doc/remove_reference.qbk index a8af148..308b520 100644 --- a/doc/remove_reference.qbk +++ b/doc/remove_reference.qbk @@ -12,7 +12,9 @@ { typedef __below type; }; - + + template using remove_reference_t = typename remove_reference::type; // C++11 and above + __type The same type as `T`, but with any reference modifier removed. __std_ref 8.3.2. diff --git a/doc/remove_volatile.qbk b/doc/remove_volatile.qbk index 822661e..8bb8350 100644 --- a/doc/remove_volatile.qbk +++ b/doc/remove_volatile.qbk @@ -12,7 +12,9 @@ { typedef __below type; }; - + + template using remove_volatile_t = typename remove_volatile::type; // C++11 and above + __type The same type as `T`, but with any /top level/ volatile-qualifier removed. __std_ref 3.9.3. diff --git a/include/boost/type_traits/add_const.hpp b/include/boost/type_traits/add_const.hpp index a9fb781..2d60118 100644 --- a/include/boost/type_traits/add_const.hpp +++ b/include/boost/type_traits/add_const.hpp @@ -41,6 +41,12 @@ namespace boost { typedef T& type; }; +#if !defined(BOOST_NO_CXX11_TEMPLATE_ALIASES) + + template using add_const_t = typename add_const::type; + +#endif + } // namespace boost #endif // BOOST_TT_ADD_CONST_HPP_INCLUDED diff --git a/include/boost/type_traits/add_cv.hpp b/include/boost/type_traits/add_cv.hpp index e62ddee..425d019 100644 --- a/include/boost/type_traits/add_cv.hpp +++ b/include/boost/type_traits/add_cv.hpp @@ -36,6 +36,12 @@ template struct add_cv{ typedef T const volatile type; }; template struct add_cv{ typedef T& type; }; +#if !defined(BOOST_NO_CXX11_TEMPLATE_ALIASES) + + template using add_cv_t = typename add_cv::type; + +#endif + } // namespace boost #endif // BOOST_TT_ADD_CV_HPP_INCLUDED diff --git a/include/boost/type_traits/add_lvalue_reference.hpp b/include/boost/type_traits/add_lvalue_reference.hpp index 41851a1..26b74e6 100644 --- a/include/boost/type_traits/add_lvalue_reference.hpp +++ b/include/boost/type_traits/add_lvalue_reference.hpp @@ -22,6 +22,12 @@ template struct add_lvalue_reference }; #endif +#if !defined(BOOST_NO_CXX11_TEMPLATE_ALIASES) + + template using add_lvalue_reference_t = typename add_lvalue_reference::type; + +#endif + } #endif // BOOST_TYPE_TRAITS_EXT_ADD_LVALUE_REFERENCE__HPP diff --git a/include/boost/type_traits/add_pointer.hpp b/include/boost/type_traits/add_pointer.hpp index 745f63a..85ad33a 100644 --- a/include/boost/type_traits/add_pointer.hpp +++ b/include/boost/type_traits/add_pointer.hpp @@ -56,6 +56,12 @@ struct add_pointer #endif +#if !defined(BOOST_NO_CXX11_TEMPLATE_ALIASES) + + template using add_pointer_t = typename add_pointer::type; + +#endif + } // namespace boost #endif // BOOST_TT_ADD_POINTER_HPP_INCLUDED diff --git a/include/boost/type_traits/add_rvalue_reference.hpp b/include/boost/type_traits/add_rvalue_reference.hpp index 44ead34..ad64894 100644 --- a/include/boost/type_traits/add_rvalue_reference.hpp +++ b/include/boost/type_traits/add_rvalue_reference.hpp @@ -58,6 +58,12 @@ template struct add_rvalue_reference typedef typename boost::type_traits_detail::add_rvalue_reference_imp::type type; }; +#if !defined(BOOST_NO_CXX11_TEMPLATE_ALIASES) + + template using add_rvalue_reference_t = typename add_rvalue_reference::type; + +#endif + } // namespace boost #endif // BOOST_TYPE_TRAITS_EXT_ADD_RVALUE_REFERENCE__HPP diff --git a/include/boost/type_traits/add_volatile.hpp b/include/boost/type_traits/add_volatile.hpp index 24f515c..253751a 100644 --- a/include/boost/type_traits/add_volatile.hpp +++ b/include/boost/type_traits/add_volatile.hpp @@ -35,6 +35,12 @@ template struct add_volatile{ typedef T volatile type; }; template struct add_volatile{ typedef T& type; }; +#if !defined(BOOST_NO_CXX11_TEMPLATE_ALIASES) + + template using add_volatile_t = typename add_volatile::type; + +#endif + } // namespace boost #endif // BOOST_TT_ADD_VOLATILE_HPP_INCLUDED diff --git a/include/boost/type_traits/conditional.hpp b/include/boost/type_traits/conditional.hpp index b7e82db..5890198 100644 --- a/include/boost/type_traits/conditional.hpp +++ b/include/boost/type_traits/conditional.hpp @@ -14,6 +14,12 @@ namespace boost { template struct conditional { typedef T type; }; template struct conditional { typedef U type; }; +#if !defined(BOOST_NO_CXX11_TEMPLATE_ALIASES) + + template using conditional_t = typename conditional::type; + +#endif + } // namespace boost diff --git a/include/boost/type_traits/copy_cv.hpp b/include/boost/type_traits/copy_cv.hpp index 1605ca3..2f3dc37 100644 --- a/include/boost/type_traits/copy_cv.hpp +++ b/include/boost/type_traits/copy_cv.hpp @@ -29,6 +29,12 @@ public: typedef typename boost::conditional::value, typename boost::add_volatile::type, CT>::type type; }; +#if !defined(BOOST_NO_CXX11_TEMPLATE_ALIASES) + + template using copy_cv_t = typename copy_cv::type; + +#endif + } // namespace boost #endif // #ifndef BOOST_TYPE_TRAITS_COPY_CV_HPP_INCLUDED diff --git a/include/boost/type_traits/decay.hpp b/include/boost/type_traits/decay.hpp index 4e81184..5b28d05 100644 --- a/include/boost/type_traits/decay.hpp +++ b/include/boost/type_traits/decay.hpp @@ -37,6 +37,12 @@ namespace boost typedef typename boost::detail::decay_imp::value, boost::is_function::value>::type type; }; +#if !defined(BOOST_NO_CXX11_TEMPLATE_ALIASES) + + template using decay_t = typename decay::type; + +#endif + } // namespace boost diff --git a/include/boost/type_traits/floating_point_promotion.hpp b/include/boost/type_traits/floating_point_promotion.hpp index 993e14e..0e709b7 100644 --- a/include/boost/type_traits/floating_point_promotion.hpp +++ b/include/boost/type_traits/floating_point_promotion.hpp @@ -14,6 +14,12 @@ namespace boost { template<> struct floating_point_promotion{ typedef double volatile type; }; template<> struct floating_point_promotion { typedef double const volatile type; }; +#if !defined(BOOST_NO_CXX11_TEMPLATE_ALIASES) + + template using floating_point_promotion_t = typename floating_point_promotion::type; + +#endif + } #endif // #ifndef FILE_boost_type_traits_floating_point_promotion_hpp_INCLUDED diff --git a/include/boost/type_traits/integral_promotion.hpp b/include/boost/type_traits/integral_promotion.hpp index 0478f56..526f90c 100644 --- a/include/boost/type_traits/integral_promotion.hpp +++ b/include/boost/type_traits/integral_promotion.hpp @@ -175,6 +175,12 @@ public: typedef typename boost::type_traits::detail::integral_promotion::type type; }; +#if !defined(BOOST_NO_CXX11_TEMPLATE_ALIASES) + + template using integral_promotion_t = typename integral_promotion::type; + +#endif + } #endif // #ifndef FILE_boost_type_traits_integral_promotion_hpp_INCLUDED diff --git a/include/boost/type_traits/make_signed.hpp b/include/boost/type_traits/make_signed.hpp index 0d2d5df..6d8b1fb 100644 --- a/include/boost/type_traits/make_signed.hpp +++ b/include/boost/type_traits/make_signed.hpp @@ -125,6 +125,12 @@ public: >::type type; }; +#if !defined(BOOST_NO_CXX11_TEMPLATE_ALIASES) + + template using make_signed_t = typename make_signed::type; + +#endif + } // namespace boost #endif // BOOST_TT_ADD_REFERENCE_HPP_INCLUDED diff --git a/include/boost/type_traits/make_unsigned.hpp b/include/boost/type_traits/make_unsigned.hpp index 4b21eba..17a8a5b 100644 --- a/include/boost/type_traits/make_unsigned.hpp +++ b/include/boost/type_traits/make_unsigned.hpp @@ -124,6 +124,12 @@ public: >::type type; }; +#if !defined(BOOST_NO_CXX11_TEMPLATE_ALIASES) + + template using make_unsigned_t = typename make_unsigned::type; + +#endif + } // namespace boost #endif // BOOST_TT_ADD_REFERENCE_HPP_INCLUDED diff --git a/include/boost/type_traits/promote.hpp b/include/boost/type_traits/promote.hpp index 587617a..1678e1c 100644 --- a/include/boost/type_traits/promote.hpp +++ b/include/boost/type_traits/promote.hpp @@ -14,6 +14,12 @@ namespace boost { template struct promote : public integral_promotion::type>{}; +#if !defined(BOOST_NO_CXX11_TEMPLATE_ALIASES) + + template using promote_t = typename promote::type; + +#endif + } #endif // #ifndef FILE_boost_type_traits_promote_hpp_INCLUDED diff --git a/include/boost/type_traits/remove_all_extents.hpp b/include/boost/type_traits/remove_all_extents.hpp index 90c90d3..b9736db 100644 --- a/include/boost/type_traits/remove_all_extents.hpp +++ b/include/boost/type_traits/remove_all_extents.hpp @@ -30,6 +30,12 @@ template struct remove_all_extents : public remove #endif #endif +#if !defined(BOOST_NO_CXX11_TEMPLATE_ALIASES) + + template using remove_all_extents_t = typename remove_all_extents::type; + +#endif + } // namespace boost #endif // BOOST_TT_REMOVE_BOUNDS_HPP_INCLUDED diff --git a/include/boost/type_traits/remove_const.hpp b/include/boost/type_traits/remove_const.hpp index e238962..6f1a193 100644 --- a/include/boost/type_traits/remove_const.hpp +++ b/include/boost/type_traits/remove_const.hpp @@ -28,6 +28,12 @@ namespace boost { #endif #endif +#if !defined(BOOST_NO_CXX11_TEMPLATE_ALIASES) + + template using remove_const_t = typename remove_const::type; + +#endif + } // namespace boost #endif // BOOST_TT_REMOVE_CONST_HPP_INCLUDED diff --git a/include/boost/type_traits/remove_cv.hpp b/include/boost/type_traits/remove_cv.hpp index 08393cf..57a96f2 100644 --- a/include/boost/type_traits/remove_cv.hpp +++ b/include/boost/type_traits/remove_cv.hpp @@ -34,6 +34,11 @@ template struct remove_cv{ typedef T type[]; }; #endif #endif +#if !defined(BOOST_NO_CXX11_TEMPLATE_ALIASES) + + template using remove_cv_t = typename remove_cv::type; + +#endif } // namespace boost diff --git a/include/boost/type_traits/remove_extent.hpp b/include/boost/type_traits/remove_extent.hpp index b6528e5..55d5730 100644 --- a/include/boost/type_traits/remove_extent.hpp +++ b/include/boost/type_traits/remove_extent.hpp @@ -30,6 +30,12 @@ template struct remove_extent { typedef T const #endif #endif +#if !defined(BOOST_NO_CXX11_TEMPLATE_ALIASES) + + template using remove_extent_t = typename remove_extent::type; + +#endif + } // namespace boost #endif // BOOST_TT_REMOVE_BOUNDS_HPP_INCLUDED diff --git a/include/boost/type_traits/remove_pointer.hpp b/include/boost/type_traits/remove_pointer.hpp index 9216652..a7baa76 100644 --- a/include/boost/type_traits/remove_pointer.hpp +++ b/include/boost/type_traits/remove_pointer.hpp @@ -72,6 +72,12 @@ template struct remove_pointer{ typedef T type; }; #endif +#if !defined(BOOST_NO_CXX11_TEMPLATE_ALIASES) + + template using remove_pointer_t = typename remove_pointer::type; + +#endif + } // namespace boost #endif // BOOST_TT_REMOVE_POINTER_HPP_INCLUDED diff --git a/include/boost/type_traits/remove_reference.hpp b/include/boost/type_traits/remove_reference.hpp index f75e677..70949fb 100644 --- a/include/boost/type_traits/remove_reference.hpp +++ b/include/boost/type_traits/remove_reference.hpp @@ -48,6 +48,11 @@ template struct remove_reference{ typedef T type; }; template struct remove_reference{ typedef T type; }; #endif +#if !defined(BOOST_NO_CXX11_TEMPLATE_ALIASES) + + template using remove_reference_t = typename remove_reference::type; + +#endif } // namespace boost diff --git a/include/boost/type_traits/remove_volatile.hpp b/include/boost/type_traits/remove_volatile.hpp index f5870f3..bf2c557 100644 --- a/include/boost/type_traits/remove_volatile.hpp +++ b/include/boost/type_traits/remove_volatile.hpp @@ -28,6 +28,11 @@ namespace boost { #endif #endif +#if !defined(BOOST_NO_CXX11_TEMPLATE_ALIASES) + + template using remove_volatile_t = typename remove_volatile::type; + +#endif } // namespace boost