1 #ifndef INCG_PHI_CORE_TYPE_TRAITS_IS_REFERENCEABLE_HPP 2 #define INCG_PHI_CORE_TYPE_TRAITS_IS_REFERENCEABLE_HPP 4 #include "phi/phi_config.hpp" 6 #if PHI_HAS_EXTENSION_PRAGMA_ONCE() 10 #include "phi/compiler_support/constexpr.hpp" 11 #include "phi/compiler_support/inline_variables.hpp" 12 #include "phi/compiler_support/intrinsics/is_referenceable.hpp" 13 #include "phi/type_traits/integral_constant.hpp" 16 #if PHI_SUPPORTS_IS_REFERENCEABLE() && 0 18 DETAIL_PHI_BEGIN_NAMESPACE()
20 template <typename TypeT>
24 template <
typename TypeT>
28 # if PHI_HAS_FEATURE_VARIABLE_TEMPLATE() 30 template <
typename TypeT>
31 PHI_INLINE_VARIABLE PHI_CONSTEXPR
bool is_referenceable_v = PHI_IS_REFERENCEABLE(TypeT);
33 template <
typename TypeT>
34 PHI_INLINE_VARIABLE PHI_CONSTEXPR
bool is_not_referenceable_v = !PHI_IS_REFERENCEABLE(TypeT);
40 # include "phi/type_traits/detail/yes_no_type.hpp" 41 # include "phi/type_traits/is_same.hpp" 43 DETAIL_PHI_BEGIN_NAMESPACE()
49 template <
typename TypeT>
50 static TypeT&
test(
int);
52 template <
typename TypeT>
57 template <
typename TypeT>
60 is_not_same<decltype(detail::is_referenceable_impl::test<TypeT>(0)),
61 detail::no_type>::value>
64 template <
typename TypeT>
68 # if PHI_HAS_FEATURE_VARIABLE_TEMPLATE() 70 template <
typename TypeT>
73 template <
typename TypeT>
80 DETAIL_PHI_END_NAMESPACE()
82 #endif // INCG_PHI_CORE_TYPE_TRAITS_IS_REFERENCEABLE_HPP Definition: integral_constant.hpp:19
Definition: is_referenceable.hpp:47
Definition: test_macros.hpp:18
Definition: yes_no_type.hpp:32
Definition: is_referenceable.hpp:65
Definition: is_referenceable.hpp:58