[/ Copyright 2007 John Maddock. Distributed under the Boost Software License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt). ] [section:is_base_of is_base_of] template struct is_base_of : public __tof {}; __inherit If Base is base class of type Derived or if both types are the same class type then inherits from __true_type, otherwise inherits from __false_type. This template will detect non-public base classes, and ambiguous base classes. It also detects indirect base classes - which is to say __is_base_of inherits from __true_type if B is located anywhere in the inheritance tree of D. Note that `is_base_of` will inherit from __true_type if X is a class type. This is a change in behaviour from Boost-1.39.0 in order to track the emerging C++0x standard. Types `Base` and `Derived` must not be incomplete types. __std_ref 10. __header ` #include ` or ` #include ` [all_compilers] __examples [:Given: ` class Base{}; class Derived : public Base{};` ] [:`is_base_of` inherits from `__true_type`.] [:`is_base_of::type` is the type `__true_type`.] [:`is_base_of::value` is an integral constant expression that evaluates to /true/.] [:`is_base_of::value` is an integral constant expression that evaluates to /true/: a class is regarded as it's own base.] [:`is_base_of::value_type` is the type `bool`.] [endsect]