Why a template alias specialization depends on the context in which it is referred?
问题 Consider this example code: 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 is an alias for pt_type<V<int>> . Nevertheless the fact it is defined depends on the context where it is referred. Where is it explained in the C++ standard that the substitution of the template parameter by the template argument is performed