16 #include <type_traits>
22 virtual ~IVisitor() =
default;
23 virtual void visit(
IAlgTool* )
const = 0;
39 template <std::invocable<IAlgTool*> Callable>
40 requires( std::is_invocable_r_v<void, Callable, IAlgTool*> )
42 const std::regex& reject_filter = s_noFilter ) {
43 class Visitor final :
public IVisitor {
47 Visitor( Callable* f ) : m_func{ f } {}
48 void visit(
IAlgTool* alg_tool )
const override { std::invoke( *m_func, alg_tool ); }
50 recursiveVisit( tools, Visitor{ &callable }, reject_filter );