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/

10-12 07:36
查看更多