29 #ifndef VC_TRAITS_HAS_NO_ALLOCATED_DATA_H_
30 #define VC_TRAITS_HAS_NO_ALLOCATED_DATA_H_
34 namespace Vc_VERSIONED_NAMESPACE
73 typename std::remove_cv<typename std::remove_reference<T>::type>::type>
79 template<
typename T, std::
size_t N>
struct has_no_allocated_data_impl<T[N]> :
public std::true_type {};
80 template<
typename T>
struct has_no_allocated_data_impl<T[]> :
public std::true_type {};
83 static_assert(has_no_allocated_data<
int[256]>::value,
"");
84 static_assert(has_no_allocated_data<
const int[256]>::value,
"");
85 static_assert(has_no_allocated_data<
volatile int[256]>::value,
"");
86 static_assert(has_no_allocated_data<
const volatile int[256]>::value,
"");
88 static_assert(has_no_allocated_data<
int[]>::value,
"");
89 static_assert(has_no_allocated_data<
int[2][2]>::value,
"");
91 static_assert(has_no_allocated_data<
const volatile std::array<int, 256> &>::value,
"");
92 static_assert(has_no_allocated_data<
const volatile std::array<int, 256>>::value,
"");
93 static_assert(has_no_allocated_data<
volatile std::array<int, 256> &>::value,
"");
94 static_assert(has_no_allocated_data<
volatile std::array<int, 256>>::value,
"");
95 static_assert(has_no_allocated_data<
const std::array<int, 256> &>::value,
"");
96 static_assert(has_no_allocated_data<
const std::array<int, 256>>::value,
"");
97 static_assert(has_no_allocated_data<std::array<int, 256>>::value,
"");
98 static_assert(has_no_allocated_data<std::array<int, 256> &&>::value,
"");
99 static_assert(!has_no_allocated_data<int*>::value,
"");
100 static_assert(!has_no_allocated_data<const int*>::value,
"");
101 static_assert(!has_no_allocated_data<const int *const>::value,
"");
102 static_assert(!has_no_allocated_data<int *const>::value,
"");
107 #endif // VC_TRAITS_HAS_NO_ALLOCATED_DATA_H_
Implements the has_no_allocated_data trait.
Type trait that tells whether a container stores its data inside the object or inside allocated memor...