These are not used anywhere, we have more efficient variable templates
for them instead. They're not documented as extensions, and are easy for
users to write if they need them.
libstdc++-v3/ChangeLog:
* include/bits/utility.h (__is_in_place_type): Remove.
* include/std/variant (__is_in_place_tag): Remove.
template<typename _Tp>
inline constexpr bool __is_in_place_type_v<in_place_type_t<_Tp>> = true;
- template<typename _Tp>
- using __is_in_place_type = bool_constant<__is_in_place_type_v<_Tp>>;
-
template<typename>
inline constexpr bool __is_in_place_index_v = false;
using _Traits = __detail::__variant::_Traits<_Types...>;
- template<typename _Tp>
- struct __is_in_place_tag : false_type { };
- template<typename _Tp>
- struct __is_in_place_tag<in_place_type_t<_Tp>> : true_type { };
- template<size_t _Np>
- struct __is_in_place_tag<in_place_index_t<_Np>> : true_type { };
-
template<typename _Tp>
static constexpr bool __not_in_place_tag
= !__is_in_place_type_v<__remove_cvref_t<_Tp>>