DUNE-ACFEM (unstable)
ExpressionResults
Helper structures for expression templates which aid in forming an (optimized) result types. More...
Namespaces | |
namespace | Dune::ACFem |
A namespace encapsulating everything defined in our dune-acfem project. | |
Classes | |
struct | Dune::ACFem::IsProductOperation< T > |
Evaluate to std::true_type if the operation is product-like. More... | |
struct | Dune::ACFem::IsDistributiveOperation< Operation, SFINAE > |
True for expressions which can be moved inside or outside of sums. More... | |
struct | Dune::ACFem::IsVolatileOperation< PlaceholderOperation< Placeholder > > |
Placeholder expressions are volatile by design, unless overridden by a RuntimEqualExpression tag. More... | |
struct | Dune::ACFem::IsVolatileOperation< IndeterminateOperation< Id > > |
Indeterminates are also volatile by design. More... | |
struct | Dune::ACFem::IsDynamicOperation< T, SFINAE > |
Should be overloaded to std::true_type for operations which introduce runtime variable data into the expression as part of the operation. More... | |
Typedefs | |
template<class T > | |
using | Dune::ACFem::IsProductExpression = IsProductOperation< Expressions::Operation< T > > |
std::true_type for product like expressions. More... | |
Detailed Description
Helper structures for expression templates which aid in forming an (optimized) result types.
While forming expression templates there are several challenges:
- perform the usual no-op optimizations (-(-arg) == arg), avoid double wrapping into IdentityOperations). Optimize for no-ops resulting from adding zeros are multiplying with zeros (see ZeroExpression, ExpressionTraits).
- deduce the point-wise return type, keeping sclar product and the like into account (see UnaryExpressionTraits, BinaryExpressionTraits)
- provide means to make use of optimized operator-functions in the definition of expression templates for complicated compound-object expressions (see ModelExpression and ExpressionResult).
- actually form those complicated-optimized expressions by simply calling the operator-functions, but in a consistent manner, see ExpressionResult.
Typedef Documentation
◆ IsProductExpression
template<class T >
using Dune::ACFem::IsProductExpression = typedef IsProductOperation<Expressions::Operation<T> > |
std::true_type for product like expressions.
Checks arity, expression-ness and the applied operation.
