27 #ifndef ANTIOCH_METAPHYSICL_UTILS_DECL_H
28 #define ANTIOCH_METAPHYSICL_UTILS_DECL_H
30 #ifdef ANTIOCH_METAPROGRAMMING_H
31 # error metaphysicl_utils_decl.h must be included before metaprogramming.h
34 #include "antioch_config.h"
39 #ifdef ANTIOCH_HAVE_METAPHYSICL
46 #include "metaphysicl/numberarray.h"
49 namespace MetaPhysicL {
50 template <std::
size_t size,
typename T>
class NumberArray;
63 static const bool value =
false;
66 template <std::
size_t size,
typename T>
80 template <std::
size_t size,
typename T,
typename NewScalar>
81 struct rebind<MetaPhysicL::NumberArray<size,T>, NewScalar>
83 typedef MetaPhysicL::NumberArray<size,NewScalar>
type;
96 is_metaphysicl<T>::value,
100 template <
typename T>
103 template <typename T>
104 struct
return_auto<T, typename Antioch::enable_if_c<is_metaphysicl<T>::value,void>::type>;
106 template <typename T>
107 struct
size_type<T, typename Antioch::enable_if_c<is_metaphysicl<T>::value,void>::type>;
109 template <typename T>
110 struct
value_type<T, typename Antioch::enable_if_c<is_metaphysicl<T>::value,void>::type>;
112 template <typename T>
113 struct
raw_value_type<T, typename Antioch::enable_if_c<is_metaphysicl<T>::value,void>::type>;
115 template <typename Tbool, typename Ttrue, typename Tfalse>
118 is_metaphysicl<Tbool>::value &&
119 is_metaphysicl<Ttrue>::value &&
120 is_metaphysicl<Tfalse>::value,
121 typename state_type<Ttrue>::type>::type
122 if_else(const Tbool& condition,
123 const Ttrue& if_true,
124 const Tfalse& if_false);
126 template <typename VectorT, typename UIntType>
129 is_metaphysicl<typename Antioch::value_type<VectorT>::type>::value &&
130 is_metaphysicl<UIntType>::value,
131 typename Antioch::value_type<VectorT>::type
133 eval_index(const VectorT & vec, const UIntType & indexes);
136 #endif // ANTIOCH_METAPHYSICL_UTILS_DECL_H
Antioch::enable_if_c< is_eigen< T >::value, typename value_type< T >::type >::type max(const T &in)
Antioch::enable_if_c< is_eigen< T >::value, typename value_type< T >::type >::type min(const T &in)
enable_if_c< is_eigen< typename value_type< VectorT >::type >::value, typename value_type< VectorT >::type >::type eval_index(const VectorT &vec, const _Matrix< _UIntT, _Rows, _Cols, _Options, _MaxRows, _MaxCols > &index)
enable_if_c< is_eigen< T1 >::value &&is_eigen< T2 >::value, typename state_type< T1 >::type >::type if_else(const Condition &condition, const T1 &if_true, const T2 &if_false)
The parameters are reduced parameters.
MetaPhysicL::NumberArray< size, NewScalar > type