5#include <dune/common/typetree/childaccess.hh>
6#include <dune/common/typetree/nodeconcepts.hh>
7#include <dune/common/typetree/treepath.hh>
9#include <amdis/typetree/TreePath.hpp>
10#include <amdis/typetree/NodeTags.hpp>
15template <
class Tree,
class TreePath,
class NodeTag = AMDiS::NodeTag_t<Tree>>
19template <
class Tree,
class NodeTag>
24template <
class Tree,
class I0,
class... II>
29template <
class Tree,
class I0,
class... II>
31 : IsValidTreePath<Dune::TypeTree::Child<Tree,0>, Dune::TypeTree::TreePath<II...>> {};
34template <
class Tree,
class I0,
class... II>
36 : IsValidTreePath<Dune::TypeTree::Child<Tree,0>, Dune::TypeTree::TreePath<II...>> {};
39template <
class Tree,
class I0,
class... II>
44template <
class Tree,
class Int, Int i,
class... II>
45struct IsValidTreePath<Tree, Dune::TypeTree::TreePath<std::integral_constant<Int,i>,II...>,
AMDiS::CompositeNodeTag>
46 : std::conditional_t<(i >= 0 && i < Int(Tree::degree())),
47 IsValidTreePath<typename Tree::template Child<(i >= 0 && i < Int(Tree::degree())) ? i : 0>::Type, Dune::TypeTree::TreePath<II...>>,
56template <
class Tree,
class Path>
57static constexpr bool ValidTreePath = Traits::IsValidTreePath<Tree,TYPEOF(makeTreePath(std::declval<Path>()))>::value;
Definition NodeTags.hpp:12
Definition NodeTags.hpp:10
Definition NodeTags.hpp:9
Definition NodeTags.hpp:15
Definition NodeTags.hpp:11
Definition Concepts.hpp:16