Кажется, что это правильно скомпилировано:
namespace A {
template<typename T>
struct S {};
namespace B {
using S = S<int>;
}
}
int main() {
using namespace A::B;
S s;
}
Даже если в строке using S = S<int>
первое S
относится к A::B::S
, а второе S
относится к шаблону A::S
.
Это стандарт C ++?