Go to the documentation of this file.
14 #define GAUDI_FUNCTIONAL_TOOL_BINDER_USES_CREATE
19 template <
typename Tr,
typename Base = FixTESPath<AlgTool>>
20 using add_base_t = std::conditional_t<Gaudi::cpp17::is_detected_v<detail2::BaseClass_t, Tr>, Tr,
23 template <
typename Signature,
typename Traits>
26 template <
typename IFace,
typename... Args,
typename Traits>
28 :
public extends<details::BaseClass_t<Traits, AlgTool>, Gaudi::Interface::Bind::IBinder<IFace>> {
35 std::index_sequence<I...> )
54 [&](
auto const&... arg ) {
56 return std::invoke( m_creator,
this,
get( arg, *
this,
ctx )... );
61 template <std::
size_t N = 0>
62 decltype(
auto ) inputLocation()
const {
64 return getKey( std::get<N>( m_handles ) );
67 decltype(
auto ) inputLocation()
const {
73 template <
typename BoundInstance,
typename Self>
75 static_assert( std::is_base_of_v<ToolBinder, Self> );
76 return +[](
void const* ptr,
const Args&...
args ) {
78 static_cast<std::add_const_t<Self>*
>( ptr ),
args... };
84 template <
typename Signature,
typename Traits_ = Traits::use_<Traits::BaseClass_t<AlgTool>>>
std::conditional_t< Gaudi::cpp17::is_detected_v< detail2::BaseClass_t, Tr >, Tr, Traits::use_< Tr, BaseClass_t< Base > >> add_base_t
Gaudi::cpp17::detected_or_t< detail2::DefaultInputHandle< T >, detail2::InputHandle_t, Tr, T > InputHandle_t
auto get(const Handle &handle, const Algo &, const EventContext &) -> decltype(details::deref(handle.get()))
T forward_as_tuple(T... args)
Base class used to extend a class implementing other interfaces.
Header file for std:chrono::duration-based Counters.
decltype(get_values_helper< Value >(std::make_index_sequence< N >())) RepeatValues_
Gaudi::cpp17::detected_or_t< Base, detail2::BaseClass_t, Tr > BaseClass_t
auto getKey(const Handle &h) -> decltype(h.objKey())