[ad_1]
The template arguments are placeholders, their scope is limited to that one declaration alone.
Therefore, the T in
template<class T> struct Alloc { };
is not connected to the T in
template<class T> using Vec = vector<T, Alloc<T>>;
similarly as you could use the same parameter name in different function declarations.
3
[ad_2]
solved Two time template