Пример кода:
struct X { void f() {} };
typedef X A;
namespace N {
struct A { void g() {} };
};
using N::A;
int main()
{
A a;
a.f();
}
Этот код компилируется правильно, и A a;
создает X
, а не N::A
.
Какое правило в стандарте охватывает это поведение?Я ожидал ошибку, что A a;
будет неоднозначным.Если я назову первую структуру A
вместо X
и удалю typedef, я получу такую ошибку.(g ++ 8,3)