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...