考虑这个示例代码:
template <class T>
using pt_type = typename T::type;
template <class T>
class V {
using type = int;
public:
using pt = pt_type<V>;
};
void g() {
V<int>::pt a; // Does compile
pt_type<V<int>> b; // Does not compile
}
V<int>::pt
是 的别名pt_type<V<int>>
。然而,它被定义的事实取决于它被引用的上下文。
C++ 标准在哪里解释了模板参数对模板参数的替换是在引用别名特化的上下文中执行的?