【C++】模版元编程 type_traits

已知一个类型Base,给定任意一个类型T,如果T是base的子类,则返回base类型,否则返回T类型。

#include <iostream>
#include <type_traits>

class Base {};

class Derived : public Base {};

template<typename T, bool b = std::is_base_of<Base, T>::value>
struct Test {

};

template<typename T>
struct Test<T, false> {
    typedef T type;
 };
 
template<typename T>
struct Test<T, true> {
    typedef Base type;
};

int main() {
    Test<Derived>::type test;
    return 0;
}
发布了391 篇原创文章 · 获赞 14 · 访问量 10万+

猜你喜欢

转载自blog.csdn.net/LU_ZHAO/article/details/105401876