了解模板中的Typedef

understanding typedefs inside templates

本文关键字:Typedef 了解      更新时间:2023-10-16

我正在检查一个示例代码,该代码试图教授州立形式的实施。我在模板中看到Typedefs,例如typedef typename T::HostClass Host

为了清楚起见,模板定义为

template<typename T>
struct Init {
    typedef typename T::HostClass Host;
    Init(Host& h) :
            host_(h) {
    }
    ~Init() {
        T::entry(host_);
        T::init(host_);
    }
    Host& host_;
};

我知道typedef旁边的typename的目的,并且正在解释Highly-Typed-Languages,例如C++(伙计,对吗?是吗?是吗?是吗?)

混乱在HostClass

typedef typename T::HostClass Host;

  • 什么是HostClass
  • 这是否意味着任何类型T都必须具有成员 HostClass

HostClass必须是T的范围中的嵌套类或其他类型(或别名类型)。

,如果T没有它,则代码将不会编译。