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