//===----------------------------------------------------------------------===//
//
// The LLVM Compiler Infrastructure
//
// This file is distributed under the University of Illinois Open Source
// License. See LICENSE.TXT for details.
//
//===----------------------------------------------------------------------===//
// type_traits
// is_base_of
#include<type_traits>template<classT,classU>voidtest_is_base_of(){static_assert((std::is_base_of<T,U>::value),"");static_assert((std::is_base_of<constT,U>::value),"");static_assert((std::is_base_of<T,constU>::value),"");static_assert((std::is_base_of<constT,constU>::value),"");}template<classT,classU>voidtest_is_not_base_of(){static_assert((!std::is_base_of<T,U>::value),"");}structB{};structB1:B{};structB2:B{};structD:privateB1,privateB2{};intmain(){test_is_base_of<B,D>();test_is_base_of<B1,D>();test_is_base_of<B2,D>();test_is_base_of<B,B1>();test_is_base_of<B,B2>();test_is_base_of<B,B>();test_is_not_base_of<D,B>();test_is_not_base_of<B&,D&>();test_is_not_base_of<B[3],D[3]>();test_is_not_base_of<int,int>();test_is_not_base_of<int,int>();}