标签:
#include<iostream>
#include<type_traits>
//继承integral_constant可以方便写静态变量
structGetSize: std::integral_constant<int,1>
{
};
template<class T,T v>
struct integral_my
{
staticconst T value = v;
typedef T value_type;
typedef integral_my<T, v>type;
operator value_type(){return value;};//重载类型转换符
};
class A {};
class B :A {};
class C {};
int main()
{
int a =GetSize::value;
typedefint(*func)();
//类型判断
std::cout << std::is_function<int>::value << std::endl;
std::cout << std::is_function<func>::value << std::endl;
std::cout << std::is_const<constint&>::value << std::endl;
std::cout << std::is_const<constint>::value << std::endl;
std::cout << std::endl;
//类型是否相同
std::cout << std::is_same<int,float>::value << std::endl;
std::cout << std::is_same<int,signedint>::value << std::endl;
std::cout << std::endl;
//判断是否未基类
std::cout << std::is_base_of<B, A>::value << std::endl;
std::cout << std::is_base_of<A, B>::value << std::endl;
std::cout << std::is_base_of<C, A>::value << std::endl;
std::cout << std::endl;
bool b = std::is_base_of<C, A>::value;
std::cout << std::boolalpha;
std::cout << b << std::endl;
return0;
}
标签:
原文地址:http://www.cnblogs.com/dongdongweiwu/p/4743658.html