В качестве одного из примеров рассмотрим
template <typename T>
struct Foo : T, Bar {};
. В этом случае больше не является деталью реализации, наследуется ли T
от Bar
(или любого другого класса), даже если наследование защищено.
Для частного наследования рассмотрим базовый класс, который выполняет некоторые бухгалтерские операции. Например, создание записей журнала каждый раз при создании экземпляра. Опять же, когда я наследую от второго типа, как в template <typename T> struct Foo : T {};
, я хочу знать, наследуется ли T
уже от класса бухгалтерского учета или мне нужно добавить это самому.