C++语言标准在标准库中声明了以下与模板组件有关的内容:
以下是否导致std::vector
类模板的实例化?
class X;
std::vector<X> f(); // Declaration only; we will define it when X is complete
换句话说,在函数声明
std::vector<X> f();
中,std::vector
是否用参数X
实例化?或者,是否在未使用或定义std::vector<X>
之前不实例化f()
?同样,以下是否导致
std::vector
类模板的实例化?class X;
typedef std::vector<X> XVector; // We will complete X before we use XVector
虽然在这些示例中使用
std::vector
,但该问题同样适用于所有模板。 最佳答案
§14.7.1\1隐式实例化[temp.inst]
§8.3.5\9函数[dcl.fct]
§3.1\2声明和定义[basic.def]
仅在需要时才实例化。我在任何地方都找不到清晰的定义,但是第二句引述说那些声明不是定义,对我而言似乎是相同的。
关于c++ - 在 “std::vector<X> f();”声明中, “std::vector<X>”是实例化吗?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/7730874/