11#ifndef O2_FRAMEWORK_CHECKTYPES_H_
12#define O2_FRAMEWORK_CHECKTYPES_H_
23template <
typename,
typename =
void>
32template <
typename T,
typename TDefined,
typename TUndefined>
35 if constexpr (is_type_complete_v<T>) {
36 onDefined(
static_cast<T*
>(
nullptr));
45template <
typename T,
typename TDefined,
typename TUndefined>
48 if constexpr (is_type_complete_v<T>) {
49 return std::move(onDefined(
static_cast<T*
>(
nullptr)));
55template <
typename T,
typename TDefined>
58 call_if_defined_full<T>(onDefined, []() ->
void {});
61template <
typename T,
typename TDefined>
#define O2_BUILTIN_UNREACHABLE
Defining PrimaryVertex explicitly as messageable.
void call_if_defined_full(TDefined &&onDefined, TUndefined &&onUndefined)
T call_if_defined_forward(TDefined &&onDefined)
constexpr bool is_type_complete_v
T call_if_defined_full_forward(TDefined &&onDefined, TUndefined &&onUndefined)
void call_if_defined(TDefined &&onDefined)