39 #ifndef Foam_pTraits_H 40 #define Foam_pTraits_H 43 #include <type_traits> 75 explicit pTraits(
const Base& obj)
93 template<
class T,
class =
void>
94 struct pTraits_rank : std::integral_constant<Foam::direction, 0> {};
102 std::void_t<decltype(pTraits<std::remove_cv_t<T>>::rank)>
105 std::integral_constant<Foam::direction, pTraits<std::remove_cv_t<T>>::rank>
110 template<
class T,
class =
void>
121 std::void_t<decltype(pTraits<std::remove_cv_t<T>>::zero)>
129 template<
class T,
class =
void>
138 std::void_t<decltype(std::remove_cv_t<T>::nComponents)>
141 std::integral_constant
144 pTraits<std::remove_cv_t<T>>::nComponents
150 template<
class T,
class =
void>
158 std::void_t<decltype(pTraits<std::remove_cv_t<T>>::zero)>
170 template<
class T,
class =
void>
179 std::void_t<decltype(std::remove_cv_t<T>::rank)>
182 std::bool_constant<std::remove_cv_t<T>::rank != 0>
188 template<
class T,
class =
void>
200 decltype(std::remove_cv_t<T>::rank),
201 decltype(std::remove_cv_t<T>::nComponents)
207 (std::remove_cv_t<T>::rank != 0)
208 && (std::remove_cv_t<T>::nComponents > 1)
229 template<
class T,
class =
void>
230 struct is_range : std::false_type {};
240 decltype(std::declval<T>().begin()),
241 decltype(std::declval<T>().end())
constexpr bool is_rotational_vectorspace_v
The is_rotational_vectorspace value of Type.
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.
Test for VectorSpace and multiple components (eg, not sphericalTensor) which means it is not rotation...
The vector-space rank: default is 0.
constexpr bool is_vectorspace_v
The is_vectorspace value of Type.
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.
Test for pTraits zero : default is false.