12 template<
typename Interface>
15 template<
typename... Methods>
21 template<
typename Storage,
typename T>
22 constexpr static auto method_table =
26 template<
typename Storage, concepts::AnyStorable<Storage> T>
28 return Invoke(util::addressof(method_table<Storage, T>));
33 constexpr auto empty() const ->
bool {
return m_storage ==
nullptr; }
34 constexpr void reset() { m_storage =
nullptr; }
36 template<concepts::OneOf<meta::Type<Methods>...> Method>
38 constexpr auto index = meta::Lookup<Method, meta::List<meta::Type<Methods>...>>;
43 constexpr Invoke(Storage
const* storage) : m_storage(storage) {}
45 Storage
const* m_storage;
Definition out_of_line_vtable.h:13
static constexpr auto create_for() -> Invoke
Definition out_of_line_vtable.h:27
constexpr auto empty() const -> bool
Definition out_of_line_vtable.h:33
constexpr Invoke()
Definition out_of_line_vtable.h:31
constexpr void reset()
Definition out_of_line_vtable.h:34
constexpr auto operator[](Method) const
Definition out_of_line_vtable.h:37
Definition tuple_forward_declaration.h:5
constexpr auto get(T &&value) -> decltype(auto)
Definition get.h:8
constexpr auto make_tuple(Args &&... args)
Definition make_tuple.h:9
Definition out_of_line_vtable.h:11
Definition erased_call.h:15