template <class Base, class Derived>
struct is_base_of : public true_type-or-false_type {};
Наследования: Если База является базовым классом типа Derived или если оба типа являются одним и тем же типом, то наследует от true_type, иначе наследует от false_type.
Этот шаблон будет обнаруживать непубличные базовые классы и двусмысленные базовые классы. Он также обнаруживает косвенные базовые классы - то есть is_base_of наследует от true_type, если B находится где-либо в дереве наследования D.
Обратите внимание, что is_base_of<X,X> наследует от true_type, если X является классным типом. Это изменение поведения от Boost-1.39.0 для отслеживания нового стандарта C++0x.
Типы База и Заведенные не должны быть неполными типами.
C++ Standard Reference: 10.
Заведующий: #include <boost/type_traits/is_base_of.hpp>>>>>>>
Совместимость компилятора: Все нынешние компиляторы поддерживаются этой чертой.
Примеры:
Учитывая: class Base{}; class Derived :public Base{};
is_base_of<Base, Derived> наследует от true_type.
is_base_of<Base, Derived>::type является типом Правда.
is_base_of<Base, Derived>:: value является постоянным выражением, которое оценивает до True.
is_base_of<Base, Base>:: value является неотъемлемым постоянным выражением, которое оценивает до : класс считается собственной базой.
is_base_of<T,T>::value_type является типом bool.