4#ifndef vtkImplicitArrayTraits_h
5#define vtkImplicitArrayTraits_h
40VTK_ABI_NAMESPACE_BEGIN
42template <
typename... Ts>
48template <
typename... Ts>
56template <
typename,
typename =
void>
78template <
typename R,
typename T,
typename Arg>
83template <
typename R,
typename Arg>
86 static_assert(std::is_integral<Arg>::value,
"Argument to map must be integral type");
87 static constexpr bool value =
true;
97template <
typename,
typename =
void>
102template <
typename Closure>
109template <
typename Closure>
114template <
typename Closure>
119template <
typename Closure>
124template <
typename Closure,
typename R,
typename Arg>
129template <
typename R,
typename Arg>
134template <
typename R,
typename Arg>
137 static_assert(std::is_integral<Arg>::value,
"Argument to closure must be integral type");
138 static constexpr bool value =
true;
148template <
typename,
typename =
void>
170template <
typename T,
typename ArgIdx,
typename ArgTup>
176template <
typename ArgIdx,
typename ArgTup>
179 static_assert(std::is_integral<ArgIdx>::value,
"Argument to mapTuple must be integral type");
180 static constexpr bool value =
true;
190template <
typename,
typename =
void>
212template <
typename R,
typename T,
typename ArgTupIdx,
typename ArgCompIdx>
218template <
typename R,
typename ArgTupIdx,
typename ArgCompIdx>
222 std::is_integral<ArgTupIdx>::value,
"1st Argument to mapComponent must be integral type");
224 std::is_integral<ArgCompIdx>::value,
"2nd Argument to mapComponent must be integral type");
225 static constexpr bool value =
true;
250template <
typename T,
typename =
void>
254 static constexpr bool value =
false;
274template <
typename T,
typename =
void>
278 static constexpr bool value =
false;
298template <
typename T,
typename =
void>
302 static constexpr bool value =
false;
320template <
typename T,
typename =
void>
324 static constexpr bool value =
false;
342template <
typename,
typename =
void>
349 void_t<decltype(&std::remove_reference<T>::type::getMemorySize)>>
353 static constexpr bool value =
true;
379 using rtype =
typename trait::rtype;
ReadOperatorCodes
An enum for formalizing the different trait types accepted for defining a "readable" object.
typename make_void< Ts... >::type void_t
Specialization of tuple ranges and iterators for vtkAOSDataArrayTemplate.
typename is_closure_trait< T >::rtype rtype
An intermediate trait for exposing a unified trait interface.
static constexpr bool value
static constexpr iarrays::ReadOperatorCodes code
used to check whether the template type has a method named getMemorySize
typename has_map_component_trait< T >::rtype rtype
An intermediate trait for exposing a unified trait interface.
static constexpr bool value
typename has_map_trait< T >::rtype rtype
An intermediate trait for exposing a unified trait interface.
static constexpr bool value
static constexpr iarrays::ReadOperatorCodes code
typename has_map_tuple_trait< T >::rtype rtype
An intermediate trait for exposing a unified trait interface.
static constexpr bool value
used to check whether the template type has a method named mapComponent
used to check whether the template type has a method named map
used to check whether the template type has a method named mapTuple
A composite trait for handling all the different capabilities a "backend" to an implicit array can ha...
static constexpr bool can_read
static constexpr bool can_direct_read_component
static constexpr iarrays::ReadOperatorCodes code
static constexpr bool can_direct_read_tuple
typename std::conditional< can_map_trait< T >::value, can_map_trait< T >, can_close_trait< T > >::type trait
static constexpr bool can_get_memory_size
static constexpr bool default_constructible
typename trait::rtype rtype
A trait determining whether an object acts like a mono-variable integer closure.