10 #ifndef SACADO_ETPCE_EXPRESSIONTRAITS_HPP
11 #define SACADO_ETPCE_EXPRESSIONTRAITS_HPP
13 #include "Sacado_Traits.hpp"
18 template <
typename T>
class Expr;
29 struct ScalarType< ETPCE::Expr<T> > {
35 struct ValueType< ETPCE::Expr<T> > {
41 struct IsADType< ETPCE::Expr<T> > {
42 static const bool value =
true;
47 struct IsScalarType< ETPCE::Expr<T> > {
48 static const bool value =
false;
53 struct Value< ETPCE::Expr<T> > {
54 typedef typename ValueType< ETPCE::Expr<T> >::type
value_type;
61 struct ScalarValue< ETPCE::Expr<T> > {
62 typedef typename ValueType< ETPCE::Expr<T> >::type
value_type;
63 typedef typename ScalarType< ETPCE::Expr<T> >::type
scalar_type;
65 return ScalarValue<value_type>::eval(x.val()); }
70 #endif // SACADO_ETPCE_EXPRESSIONTRAITS_HPP
ValueType< ETPCE::Expr< T > >::type value_type
static const scalar_type & eval(const ETPCE::Expr< T > &x)
ScalarType< ETPCE::Expr< T > >::type scalar_type
ValueType< ETPCE::Expr< T > >::type value_type
static const value_type & eval(const ETPCE::Expr< T > &x)
ETPCE::Expr< T >::value_type type
ScalarType< typename ETPCE::Expr< T >::value_type >::type type