【发布时间】:2020-07-20 07:16:07
【问题描述】:
我对 Stroustrup C++ 第 4 版第 749-750 页的代码有疑问。此代码试图显示实例化绑定点。 Stroustrup 在这段代码之前说 “对于给定的模板参数集,每次使用模板都定义了一个实例化点。对于函数模板,该点(实例化)位于最近的全局或命名空间范围内,包含其使用,就在包含该使用的声明之后。”。
void g(int); template<typename T> void f(T a) { g(a); // g is bound at a point of instantiation } void h(int i) { extern void g(double); f(i); } // point of declaration for f<int>
关于此代码的问题:
- 实例化点是
f(i)吗?它是对给定参数集的模板的使用。如果不是,那是什么? - Stroustrup 认为
f<int>的“声明点”在h() {}之后。声明点与实例化点不同吗?
【问题讨论】:
标签: c++ language-lawyer