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
.