首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >成员类实例化

成员类实例化
EN

Stack Overflow用户
提问于 2015-03-05 04:43:21
回答 1查看 94关注 0票数 1

N4296::14.7.1/1 [temp.inst]告诉我们如下:

类模板专门化的隐式实例化导致声明的隐式实例化,而不是定义、.、成员类、.

那条规则是什么?让我举一个例子:

代码语言:javascript
复制
template<class T>
class A
{
public:
    template<class W> class Y; //1, declaration
    template<class V> class U{ V v; };  //2, definition
};

A<int> a; //3, implicit instantiation
int main(){ }

//3的隐式实例化是否会导致//2//1的隐式实例化?如果是,那么使用什么模板参数来实例化这些成员类?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-03-05 08:48:02

与“外部”模板相比,这些成员模板没有什么特别之处。编译器将它们读入声明,这样它就知道存在A<T>::Y<W>A<T>::U<V>的名称,这与您为A类声明模板时非常相似:

代码语言:javascript
复制
template <typename T>
class A {
     int a;
};

它也只声明类A<T>的存在,但不实例化它。

实例化被推迟到实际使用模板类型(或显式实例化),这同样适用于成员模板。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/28870175

复制
相关文章

相似问题

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