1#ifndef __DUNE_ACFEM_TENSORS_OPERATIONS_DEPENDSON_HH__
2#define __DUNE_ACFEM_TENSORS_OPERATIONS_DEPENDSON_HH__
4#include "../../expressions/examine.hh"
5#include "derivative.hh"
16 template<
class T,
class Id,
class Signature,
class SFINAE =
void>
24 template<
class T, std::
size_t Id,
class Signature>
27 std::enable_if_t<(!IndeterminateMatch<T, IndexConstant<Id> >::value
28 && !IsPlaceholderExpression<T>::value
33 template<
class T, std::
size_t Id,
class Signature>
36 std::enable_if_t<(IndeterminateMatch<T, IndexConstant<Id> >::value
37 || (IsPlaceholderExpression<T>::value
39 !ExpressionTraits<decltype(doDerivative<Id, Signature>(std::declval<T>(), PriorityTag<42>{}))>::isZero)
47 template<std::
size_t Id,
class Signature,
class T>
48 using DependsOn = Expressions::ExamineOr<T, TerminalDependsOn, IndexConstant<Id>, Signature>;
50 template<
class X,
class T>
51 constexpr auto dependsOn(X&& x, T&& t)
53 using XType = EnclosedType<X>;
54 constexpr std::size_t
id = IndeterminateTraits<XType>::id_;
55 using Signature =
typename TensorTraits<XType>::Signature;
57 return DependsOn<id, Signature, T>{};
Constant< std::size_t, V > IndexConstant
Short-cut for integral constant of type std::size_t.
Definition: types.hh:44
BoolConstant< false > FalseType
Alias for std::false_type.
Definition: types.hh:110
BoolConstant< true > TrueType
Alias for std::true_type.
Definition: types.hh:107
Definition: dependson.hh:19