19 template <
typename Signature,
typename Traits>
22 template <
typename IFace,
typename... Args,
typename Traits>
24 :
public extends<details::BaseClass_t<Traits, AlgTool>, Gaudi::Interface::Bind::IBinder<IFace>> {
27 constexpr static std::size_t
N =
sizeof...( Args );
34 template <
size_t... I>
36 Creator creator, std::index_sequence<I...> )
40 , m_handles{ std::tuple_cat( std::forward_as_tuple(
this ), std::get<I>( args ) )... }
41 , m_creator{ creator } {}
44 std::tuple<details::InputHandle_t<Traits, Args>...>
m_handles;
51 inputs.tuple(), creator,
std::make_index_sequence<
N>{} } {}
55 [&](
auto const&... arg ) {
57 return std::invoke(
m_creator,
this,
get( arg, *
this, ctx )... );
62 template <std::
size_t N = 0>
74 template <
typename BoundInstance,
typename Self>
76 static_assert( std::is_base_of_v<ToolBinder, Self> );
77 return +[](
void const* ptr,
const Args&... args ) {
79 static_cast<std::add_const_t<Self>*
>( ptr ), args... };
85 template <
typename Signature,
typename Traits_ = Traits::use_<Traits::BaseClass_t<AlgTool>>>
This class represents an entry point to all the event specific data.
Definition of the basic interface.
Base class used to extend a class implementing other interfaces.
typename detail2::InputHandle< T, Tr, detail2::DefaultInputHandle_t >::type InputHandle_t
auto get(const Handle &handle, const Algo &, const EventContext &) -> decltype(details::deref(handle.get()))
auto getKey(const Handle &h) -> decltype(h.objKey())
std::tuple< LocationSpec_t< Args >... > LocationSpecs_t
detail2::BaseClass< Tr, Default >::type BaseClass_t
details::ToolBinder< Signature, Traits_ > ToolBinder
This file provides a Grammar for the type Gaudi::Accumulators::Axis It allows to use that type from p...
std::pair< std::string, std::string > KeyValue
std::pair< std::string, std::vector< std::string > > KeyValues