在老版本的C++中可以在模板中使用静态断言static_assert来判断模板参数类型的合法性,使用std::is_base_of(c++11)来判断类型继承关系。 static_assert(std::is_base_of<TBase, T>::value) 使用静态断言的问题就是只会在编译器对模板实例化时才会进行静态断言,没办法在开发中就知道是否有错误。 但是使用cpp2-中引入的concept,可以使用约束运算结果来匹配模板,可以解决这个问题。 在cpp20中引入了concept,使用requir…