Iros
 
Loading...
Searching...
No Matches
vtable_for.h
Go to the documentation of this file.
1#pragma once
2
6#include "di/util/as_const.h"
7
8namespace di::concepts {
9namespace detail {
10 template<typename M, typename T>
11 concept VTableValidFor = Method<meta::Type<M>> && requires(T const vtable) {
13 };
14}
15
16template<typename T, typename I>
17concept VTableFor = DefaultConstructible<T> && Copyable<T> && Interface<I> && requires(T vtable) {
18 vtable.reset();
19 { util::as_const(vtable).empty() } -> BooleanTestable;
20} && requires(I* interface) { []<detail::VTableValidFor<T>... Methods>(meta::List<Methods...>*) {}(interface); };
21}
Definition operations.h:128
Definition operations.h:40
Definition operations.h:24
Definition interface.h:24
Definition method.h:8
Definition core.h:114
Definition vtable_for.h:17
Definition vtable_for.h:11
Definition impl.h:7
Definition any_storable.h:9
T::Type Type
Definition core.h:26
Definition core.h:5