![Logo](../../ATLAS-Logo-Square-Blue-RGB.png) |
ATLAS Offline Software
|
Go to the documentation of this file.
23 #ifndef ATHENAKERNEL_BASES_H
24 #define ATHENAKERNEL_BASES_H
27 #include <type_traits>
88 template <
class CALLABLE>
93 using return_t = decltype (
f (
static_cast<void*
> (
nullptr),
false));
94 return return_t (
false);
119 template <
class BASE,
class... REST>
180 template <
class CALLABLE>
189 auto ret1 =
f (
static_cast<base_t*
> (
nullptr), base_is_virtual);
190 if (
static_cast<bool> (ret1)) {
196 if (
static_cast<bool> (ret2)) {
201 if constexpr (
sizeof... (REST) > 0) {
203 if (
static_cast<bool> (ret3)) {
209 using return_t = decltype (ret1);
210 return return_t (
false);
218 #endif // not ATHENAKERNEL_BASES_H
std::true_type is_virtual
Traits class to hold derivation information.
Marker to indicate a nonexistent base class.
Wrapper to indicate virtual derivation.
std::false_type is_virtual
static auto foreach_(CALLABLE f, bool=false)
Iterate over base classes.
static auto foreach_(CALLABLE f, bool is_virtual=false)
Iterate over base classes.
Helper metafunction to get base class types.
Represent a list of base classes.