diff --git a/Help/dev/source.rst b/Help/dev/source.rst index d8de4e14b3..c36f3349e6 100644 --- a/Help/dev/source.rst +++ b/Help/dev/source.rst @@ -111,7 +111,8 @@ Available features are: ``cm::shared_lock`` * ````: - ``cm::enable_if_t`` + ``cm::conditional_t``, ``cm::decay_t``, ``cm::enable_if_t``, + ``cm::remove_cv_t``, ``cm::remove_reference_t`` * ````: ``cm::cbegin``, ``cm::cend``, ``cm::rbegin``, ``cm::rend``, @@ -169,7 +170,7 @@ Available features are: * ````: ``cm::bool_constant``, ``cm::invoke_result_t``, ``cm::invoke_result``, - ``cm::void_t`` + ``cm::is_same_v``, ``cm::void_t`` * ````: ``cm::size``, ``cm::empty``, ``cm::data`` diff --git a/Utilities/std/cm/type_traits b/Utilities/std/cm/type_traits index 6bb6b5c7b3..6126e71a0c 100644 --- a/Utilities/std/cm/type_traits +++ b/Utilities/std/cm/type_traits @@ -11,27 +11,39 @@ namespace cm { #if __cplusplus >= 201402L || (defined(_MSVC_LANG) && _MSVC_LANG >= 201402L) -// Miscellaneous transformations template using enable_if_t = std::enable_if_t; +using std::conditional_t; +using std::decay_t; +using std::remove_cv_t; +using std::remove_reference_t; + #else -// Miscellaneous transformations template using enable_if_t = typename std::enable_if::type; -#endif +template +using conditional_t = typename std::conditional::type; + +template +using decay_t = typename std::decay::type; + +template +using remove_cv_t = typename std::remove_cv::type; + +template +using remove_reference_t = typename std::remove_reference::type; + +#endif // C++14 (_t aliases) #if __cplusplus >= 201703L || (defined(_MSVC_LANG) && _MSVC_LANG >= 201703L) -// Helper classes using std::bool_constant; -// Miscellaneous transformations using std::invoke_result; using std::invoke_result_t; - using std::void_t; #else @@ -44,7 +56,7 @@ using bool_constant = std::integral_constant; template using invoke_result = std::result_of; -template +template using invoke_result_t = typename invoke_result::type; template @@ -77,13 +89,13 @@ struct is_scoped_enum_helper !std::is_convertible::type>::value> { }; -} +} // namespace internals template struct is_scoped_enum : public internals::is_scoped_enum_helper { }; -#endif +#endif // is_scoped_enum } // namespace cm