Loading [MathJax]/extensions/tex2jax.js

DUNE-ACFEM (unstable)

decay.hh
1#ifndef __DUNE_ACFEM_EXPRESSIONS_DECAY_HH__
2#define __DUNE_ACFEM_EXPRESSIONS_DECAY_HH__
3
4#include "transform.hh"
5#include "subexpression.hh"
6
7namespace Dune::ACFem::Expressions {
8
12 template<class Optimize = OptimizeTop>
14 {
15 template<class F, class... Arg>
16 constexpr auto operator()(F&& f, Arg&&... arg) const
17 {
18 return subExpressionExpression(operate(Optimize{}, std::decay_t<F>(f), subExpressionExpression(std::decay_t<Arg>(arg))...));
19 }
20 };
21
26 template<class E, class Optimize = OptimizeTop, class TreePos = IndexSequence<> >
27 auto decayCopy(E&& e, Optimize = Optimize{}, TreePos = TreePos{})
28 {
29 return transform(std::forward<E>(e), FalseType{}, OperateDecay<Optimize>{}, TreePos{});
30 }
31
40 template<class T, class TreePos = IndexSequence<> >
41 using DecayExpression = std::decay_t<decltype(decayCopy(std::declval<T>(), OptimizeTop{}, TreePos{}))>;
42
43}
44
45#endif // __DUNE_ACFEM_EXPRESSIONS_DECAY_HH__
OptimizeTag< Policy::OptimizationLevelMax::value > OptimizeTop
The top-level optmization tag.
Definition: optimizationbase.hh:59
constexpr decltype(auto) subExpressionExpression(T &&t)
Recurse to the wrapped expression if T fulfills IsSubExpressionExpression<T>.
Definition: subexpression.hh:35
BoolConstant< false > FalseType
Alias for std::false_type.
Definition: types.hh:110
Operation functor for transform().
Definition: decay.hh:14
Creative Commons License   |  Legal Statements / Impressum  |  Hosted by TU Dresden & Uni Heidelberg  |  generated with Hugo v0.111.3 (Mar 12, 23:28, 2025)