39 #ifndef Foam_pTraits_H 40 #define Foam_pTraits_H 43 #include <type_traits> 87 explicit pTraits(
const Base& obj)
105 template<
class T,
class =
void>
106 struct is_vectorspace : std::false_type {};
113 std::integral_constant<bool, (T::rank != 0)>
118 template<
class T,
class =
void>
119 struct pTraits_rank : std::integral_constant<Foam::direction, 0> {};
130 std::integral_constant<Foam::direction, pTraits<T>::rank>
135 template<
class T,
class =
void>
150 template<
class T,
class =
void>
162 std::integral_constant<Foam::direction, pTraits<T>::nComponents>
167 template<
class T,
class =
void>
187 template<
class T,
class =
void>
188 struct is_range : std::false_type {};
198 decltype(std::declval<T>().begin()),
199 decltype(std::declval<T>().end())
An Istream is an abstract base class for all input systems (streams, files, token lists etc)...
The vector-space number of components: default is 1.
A traits class, which is primarily used for primitives and vector-space.
The vector-space rank: default is 0.
pTraits(const Base &obj)
Copy construct from base class.
Test for VectorSpace : default is false.
The underlying component data type: default is pass-through.
void T(FieldField< Field, Type > &f1, const FieldField< Field, Type > &f2)
Represents 0/1 range or concept. Used for tagged dispatch or clamping.
Direction is an 8-bit unsigned integer type used to represent Cartesian directions, components etc.
Test for containers with begin/end range iterators.
void void_t
Map a sequence of any types to void as per C++17 std::void_t.
Namespace for std templates that are are part of future C++ standards or that are in a state of chang...
Test for pTraits zero : default is false.