O
template<typename A, typename B, typename C>
struct Complete final
: Visitable<Complete, A, B, C> {}
В крайнем случае, VisitableWrapper<Complete, A, B, C>
, который сам будет наследником и A, B, C
, и Visitable<Complete<A, B, C>>
Size: a a a
O
template<typename A, typename B, typename C>
struct Complete final
: Visitable<Complete, A, B, C> {}
В крайнем случае, VisitableWrapper<Complete, A, B, C>
, который сам будет наследником и A, B, C
, и Visitable<Complete<A, B, C>>
ID
template<typename A, typename B, typename C>
struct Complete final
: Visitable<Complete, A, B, C> {}
В крайнем случае, VisitableWrapper<Complete, A, B, C>
, который сам будет наследником и A, B, C
, и Visitable<Complete<A, B, C>>
O
O
Complete
всё так же наследуется от A, B, C, Visitable<Complete<A,B,C>>
, только теперь каждое имя мы упоминаем лишь однократноID
O
struct Complete final : Visitable<...>, Loggable<...> {}
ID
D
AZ
AP
Н
AP
AZ