Баг компилятора. Класс внутри шаблонного класса.

 

Билд 1881.  Баг компилятора. 

template<typename T> 
struct A
{
  struct B { T t; } b;  //'B' - identifier already used
};


void OnInit()
{
  A<int> a;
  A<double> b;
};
 
С такой сигнатурой
void B::B()
причина сообщения компилятора понятна.
 
fxsaber:
С такой сигнатурой
причина сообщения компилятора понятна.
Где там B::B()?
 
Alexey Navoykov:
Где там B::B()?

Если посмотреть __FUNCSIG__  в конструкторе.

 

В упрощённом виде эта ошибка выглядит так:

class A {
        class B {} b;
};
class C {
        class B {} b; //Error: 'B' - identifier already used
};

Т.е. class B не внутри A,

class A {
        class B {} b;
};

а сам по себе

class B {};
class A {
        B b;
};
Причина обращения: