gpt4 book ai didi

c++ - 成员类实例化

转载 作者:太空宇宙 更新时间:2023-11-04 13:38:00 26 4
gpt4 key购买 nike

N4296::14.7.1/1 [temp.inst] 告诉我们以下内容:

The implicit instantiation of a class template specialization causes the implicit instantiation of the declarations, but not of the definitions, [...], member classes, [...]

这条规则是关于什么的?让我举个例子:

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 处的隐式实例化吗?如果是这样,使用什么模板参数来实例化这些成员类?

最佳答案

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

template <typename T>
class A {
int a;
};

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

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

关于c++ - 成员类实例化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28870175/

26 4 0
文章推荐: html - html中的表格间距
文章推荐: 使用 Apache commons 的 Java FTP 抛出 "IOException caught while copying"
文章推荐: javascript -
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com