Loading [MathJax]/extensions/tex2jax.js
Go to the documentation of this file.
15 #define GAUDI_FUNCTIONAL_TOOL_BINDER_USES_CREATE
20 template <
typename Tr,
typename Base = FixTESPath<AlgTool>>
21 using add_base_t = std::conditional_t<Gaudi::cpp17::is_detected_v<detail2::BaseClass_t, Tr>, Tr,
24 template <
typename Signature,
typename Traits>
27 template <
typename IFace,
typename... Args,
typename Traits>
29 :
public extends<details::BaseClass_t<Traits, AlgTool>, Gaudi::Interface::Bind::IBinder<IFace>> {
36 std::index_sequence<I...> )
55 [&](
auto const&... arg ) {
57 return std::invoke( m_creator,
this,
get( arg, *
this,
ctx )... );
62 template <std::
size_t N = 0>
63 decltype(
auto ) inputLocation()
const {
65 return getKey( std::get<N>( m_handles ) );
68 decltype(
auto ) inputLocation()
const {
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>>>
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())