is_base_of Class


The new home for Visual Studio documentation is Visual Studio 2017 Documentation on

The latest version of this topic can be found at is_base_of Class.

Tests whether one type is base of another.

template <class Base, class Derived>  
struct is_base_of;  


The base class to test for.

The derived type to test for.

An instance of the type predicate holds true if the type Base is a base class of the type Derived, otherwise it holds false.

#include <type_traits>   
#include <iostream>   
struct base   
    int val;   
struct derived   
    : public base   
int main()   
    std::cout << "is_base_of<base, base> == " << std::boolalpha   
        << std::is_base_of<base, base>::value << std::endl;   
    std::cout << "is_base_of<base, derived> == " << std::boolalpha   
        << std::is_base_of<base, derived>::value << std::endl;   
    std::cout << "is_base_of<derived, base> == " << std::boolalpha   
        << std::is_base_of<derived, base>::value << std::endl;   
    return (0);   

is_base_of<base, base> == true  
is_base_of<base, derived> == true  
is_base_of<derived, base> == false  

Header: <type_traits>

Namespace: std

is_convertible Class