我无法理解为什么标准首先定义模板实例化 for templates ,如下所示N3797::14.7/4 [temp.spec]
:
实例化一个函数,一个类,一个类的成员的行为 模板或成员模板称为模板 实例
但是在任何地方它都使用 专业化 的实例,如下面的N3797::14.7/4 [temp.spec]
:
实例化的模板特化可以是隐式的 实例化(14.7.1)给定的参数列表或显式 实例化(14.7.2)。
我不明白。模板本身与模板规范不同,后者可以是explicit specialization
或partial specialization
。例如N3797::14.5.5/1 [temp.class.spec]
:
主要模板应在任何特化之前声明 那个模板。
我的问题是关于为什么标准首先声明模板的instatiation
概念,但是它进一步将这个概念应用于模板特化?
此外,N3797::14.7/4 [temp.spec]
将专业化概念定义如下:
特化是一个类,函数或类成员 实例化或明确专门化(14.7.3)。
所以,部分专业化不是专业化,是吗?我对这些概念感到困惑。你能不能澄清一下吗?
答案 0 :(得分:0)
这是一个类似的问题here。 现在,我试着再次回答这个问题。
模板是一种无限的类型,所以我们无法实例化模板,我们只能实例化模板专业化。
隐式实例化,当前编译单元需要使用模板代码,编译器自动实例化模板专业化。
显式实例化,我们手动输入代码会导致编译器实例化模板专业化。