首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >模板专门化和从其他模板类继承模板类

模板专门化和从其他模板类继承模板类
EN

Stack Overflow用户
提问于 2019-05-30 04:39:18
回答 1查看 687关注 0票数 2

我有一些关于下一个代码的问题:

代码语言:javascript
复制
template<typename T>
class Base;

template<typename T, typename P>
class Base<T(P)> {

};

template<typename T>
class Derived;

template<typename T, typename P>
class Derived<T(P)> : public Base<T(P)> {

};

  1. 类专门化Derived<T(P)>在将类专门化Derived<T(P)>的模板参数TPclass Base.

的模板参数T绑定时,从类template<typename T> class Base或类template<typename T, typename P> class Base<T(P)>

  • What继承的名称
EN

回答 1

Stack Overflow用户

发布于 2019-05-30 05:28:36

  1. 从模板Derived<T(P)>实例化的类继承自Base<T(P)>实例化的类。由于类型继承与您的Base部分专门化相匹配,因此该模板将用于实例化要继承的类。
  2. 它被称为继承。那里没什么特别的。您只是用T(P)类型实例化了模板Base并继承了结果类。

Derived<T(P)>被实例化时,Base<T(P)>将被实例化,因此Derived<void(int)>继承自Base<void(int)>。这两个实例化都将经历相同的规则集,以确定使用哪个模板来实例化该类。

你可能会认为T(P)是某种特殊的模板,你可能会感到困惑。事实并非如此。它只是“返回T并接受P类型的单个参数的函数”类型。诚然,这样的类型在模板之外不会出现太多,但在其他地方它们是完全合法的。即

代码语言:javascript
复制
using FuncType = void(int);

// These two declarations are exactly the same
void doAThing(FuncType* callback);
void doAThing(void(*callback)(int));
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/56368183

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档