10 #if defined(__clang__) || __GNUC__ > 5 11 #define OVERLOADER_CONSTEXPR \ 14 #define OVERLOADER_CONSTEXPR 27 template <
class... Fs>
30 template <
class F1,
class F2,
class F3,
class F4,
class F5,
class F6,
class F7,
31 class F8,
class... Fs>
33 : F1, F2, F3, F4, F5, F6, F7, F8,
Overloader<Fs...> {
35 OVERLOADER_CONSTEXPR
Overloader(F1 f1, F2 f2, F3 f3, F4 f4, F5 f5, F6 f6,
36 F7 f7, F8 f8, Fs... fs)
45 Overloader<Fs...>(std::move(fs)...) {}
58 template <
class F1,
class F2,
class F3,
class F4,
class... Fs>
61 OVERLOADER_CONSTEXPR
Overloader(F1 f1, F2 f2, F3 f3, F4 f4, Fs... fs)
66 Overloader<Fs...>(std::move(fs)...) {}
75 template <
class F1,
class F2,
class... Fs>
78 OVERLOADER_CONSTEXPR
Overloader(F1 f1, F2 f2, Fs... fs)
81 Overloader<Fs...>(std::move(fs)...) {}
91 explicit OVERLOADER_CONSTEXPR
Overloader(F f) : F(std::move(f)) {}
101 const overloader_detail::no_such_type& ) noexcept {}
108 template <
class... Fs>
Overloader< Fs... > make_overloader(Fs... fs)
Create Overloader<Fs...>, see Overloader for details.
Definition: Overloader.hpp:109
Used for overloading lambdas, useful for lambda-SFINAE.
Definition: Overloader.hpp:28
#define SPECTRE_ALWAYS_INLINE
Always inline a function. Only use this if you benchmarked the code.
Definition: ForceInline.hpp:20
Definition: Overloader.hpp:17
Defines macro to always inline a function.