diff options
Diffstat (limited to 'libcxx/include/utility')
-rw-r--r-- | libcxx/include/utility | 18 |
1 files changed, 14 insertions, 4 deletions
diff --git a/libcxx/include/utility b/libcxx/include/utility index cfab350cb83..5e555065622 100644 --- a/libcxx/include/utility +++ b/libcxx/include/utility @@ -928,10 +928,20 @@ inline in_place_tag in_place(__in_place_index_tag<_Nx>) { return in_place_tag(__in_place_tag{}); } -template <class _Tp> struct __is_inplace_type : false_type {}; -template <> struct __is_inplace_type<in_place_t> : true_type {}; -template <class _Tp> struct __is_inplace_type<in_place_type_t<_Tp>> : true_type {}; -template <size_t _Idx> struct __is_inplace_type<in_place_index_t<_Idx>> : true_type {}; +template <class _Tp> struct __is_inplace_tag_imp : false_type {}; +template <> struct __is_inplace_tag_imp<in_place_tag(__in_place_tag)> : true_type {}; +template <class _Tp> struct __is_inplace_tag_imp<in_place_tag(__in_place_type_tag<_Tp>)> : true_type {}; +template <size_t _Idx> struct __is_inplace_tag_imp<in_place_tag(__in_place_index_tag<_Idx>)> : true_type {}; + +template <class _Tp> +using __is_inplace_tag = __is_inplace_tag_imp<remove_pointer_t<decay_t<_Tp>>>; + +template <class _Tp> struct __is_inplace_type_tag_imp : false_type {}; +template <class _Tp> struct __is_inplace_type_tag_imp<in_place_tag(__in_place_type_tag<_Tp>)> : true_type {}; + +template <class _Tp> +using __is_inplace_type_tag = __is_inplace_type_tag_imp<remove_pointer_t<decay_t<_Tp>>>; + #endif // _LIBCPP_STD_VER > 14 |