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

Авторизуйтесь или зарегистрируйтесь, чтобы добавить комментарий
Alexey Navoykov
4571
Alexey Navoykov  

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

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


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

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

A100
2094
A100  

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

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;
};
Авторизуйтесь или зарегистрируйтесь, чтобы добавить комментарий