15 template <
class ContainerT>
19 ContainerT::is_leaf_node::value,
20 "visit_preorder needs to be specialized for non-leaf-node container");
24 template <
typename ContainerU,
typename VisitorT>
26 ContainerU& config,
typename ContainerT::coordinate_type
const& coord, VisitorT&& visitor)
28 visitor(coord, config);
36 template <
class ContainerT,
class CoordinateT,
class VisitorT>
37 void visit_preorder(ContainerT& config, CoordinateT
const& coord, VisitorT&& visitor)
40 std::is_same<typename ContainerT::coordinate_type, CoordinateT>::value,
41 "coordinate type does not match container type");
43 config, coord, std::forward<VisitorT>(visitor));
void visit_preorder(ContainerT &config, CoordinateT const &coord, VisitorT &&visitor)
Apply the specified visitor to all containers in a hierarchy by doing a pre-order tree traversal.
Implementation detail of the visit_preorder() free function (q.v.).
static void call(ContainerU &config, typename ContainerT::coordinate_type const &coord, VisitorT &&visitor)