1 #ifndef INCG_PHI_CORE_TYPE_TRAITS_IS_AGGREGATE_HPP 2 #define INCG_PHI_CORE_TYPE_TRAITS_IS_AGGREGATE_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_aggregate.hpp" 13 #include "phi/type_traits/integral_constant.hpp" 15 #if PHI_SUPPORTS_IS_AGGREGATE() 17 # include "phi/type_traits/remove_cv.hpp" 19 # define PHI_HAS_WORKING_IS_AGGREGATE() 1 21 DETAIL_PHI_BEGIN_NAMESPACE()
23 template <typename TypeT>
27 template <
typename TypeT>
31 # if PHI_HAS_FEATURE_VARIABLE_TEMPLATE() 33 template <
typename TypeT>
34 PHI_INLINE_VARIABLE PHI_CONSTEXPR
bool is_aggregate_v = PHI_IS_AGGREGATE(remove_cv_t<TypeT>);
36 template <
typename TypeT>
37 PHI_INLINE_VARIABLE PHI_CONSTEXPR
bool is_not_aggregate_v = !PHI_IS_AGGREGATE(remove_cv_t<TypeT>);
43 # include "phi/type_traits/false_t.hpp" 45 # define PHI_HAS_WORKING_IS_AGGREGATE() 0 47 DETAIL_PHI_BEGIN_NAMESPACE()
49 template <typename TypeT>
53 "phi::is_aggregate requires compiler support for intrinsic __is_aggregate");
56 template <
typename TypeT>
60 "phi::is_not_aggregate requires compiler support for intrinsic __is_aggregate");
63 # if PHI_HAS_FEATURE_VARIABLE_TEMPLATE() 65 template <
typename TypeT>
68 template <
typename TypeT>
75 DETAIL_PHI_END_NAMESPACE()
77 #endif // INCG_PHI_CORE_TYPE_TRAITS_IS_AGGREGATE_HPP Definition: integral_constant.hpp:19
Definition: false_t.hpp:29
Definition: is_aggregate.hpp:57
Definition: is_aggregate.hpp:50