C ++ шаблоны позволяют нам помещать все что угодно в наши объекты с аргументами шаблона.Однако, если в наших аргументах шаблона используются функции / переменные, которые принадлежат к определенным типам, как мы проверяем?
template<typename BarType>rguments
class Foo {
public:
Foo() { bar = new BarType() }
private:
BarType * bar;
}
Foo<Bar> …
BarType может быть чем угодно, полученным из суперкласса Bar.
Что произойдет, если мывызвать некоторые функции, которые принадлежат только Bar в нашем классе Foo?Что произойдет, если мы передадим не BarType?Мы все равно должны проверить?