29 #ifndef VC_TRAITS_HAS_CONTIGUOUS_STORAGE_H_
30 #define VC_TRAITS_HAS_CONTIGUOUS_STORAGE_H_
32 #include <initializer_list>
35 #ifdef _LIBCPP_BEGIN_NAMESPACE_STD
36 _LIBCPP_BEGIN_NAMESPACE_STD
41 template <
typename T,
size_t N>
struct array;
42 template <
typename T,
typename Allocator>
class vector;
43 #ifdef _LIBCPP_END_NAMESPACE_STD
44 _LIBCPP_END_NAMESPACE_STD
49 namespace Vc_VERSIONED_NAMESPACE
54 template <
typename T>
struct has_contiguous_storage_impl :
public std::false_type {};
57 struct has_contiguous_storage
58 :
public has_contiguous_storage_impl<
59 typename std::remove_cv<typename std::remove_reference<T>::type>::type>
64 template <
typename T>
struct has_contiguous_storage_impl<T *> :
public std::true_type {};
65 template <
typename T>
struct has_contiguous_storage_impl<
std::unique_ptr<T[]>> :
public std::true_type {};
66 template <
typename T>
struct has_contiguous_storage_impl<
std::initializer_list<T>> :
public std::true_type {};
67 template <
typename T, std::
size_t N>
struct has_contiguous_storage_impl<T[N]> :
public std::true_type {};
68 template <
typename T, std::
size_t N>
struct has_contiguous_storage_impl<
std::array<T, N>> :
public std::true_type {};
69 template <
typename T,
typename A>
struct has_contiguous_storage_impl<
std::
vector<T, A>> :
public std::true_type {};
74 #endif // VC_TRAITS_HAS_CONTIGUOUS_STORAGE_H_
Common::AdaptSubscriptOperator< std::vector< T, Allocator >> vector
An adapted std::vector container with an additional subscript operator which implements gather and sc...