Баг компилятора. Массив в шаблонном классе: default constructor of struct is not defined

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

Билд 1881.  Баг компилятора.  Конструктор задан.  Если же убрать этот конструктор, то компилируется.

template<typename T>
struct A
{
  A() { }
  
  A arr[];  // 'arr' - default constructor of struct 'A<int>' is not defined
};

A<int> a;
Alexey Navoykov
4570
Alexey Navoykov  

Оказывается, шаблон тут ни при чём. Всё и без него прекрасно не компилируется:

struct A
{
  A() {  }
  
  A arr[];  // 'arr' - default constructor of struct 'A' is not defined
};

A a;
fxsaber
16736
fxsaber  
Такой код выжрет всю память.
Alexey Navoykov
4570
Alexey Navoykov  
fxsaber:
Такой код выжрет всю память.
С чего вдруг?
fxsaber
16736
fxsaber  
Alexey Navoykov:
С чего вдруг?

Рекурсия.

Alexey Navoykov
4570
Alexey Navoykov  
fxsaber:

Рекурсия.

Вы чего-то путаете.
fxsaber
16736
fxsaber  
Alexey Navoykov:
Вы чего-то путаете.

Скорее не понимаю, как здесь не может не быть рекурсии. Кто-нибудь рассудит.

Alexey Navoykov
4570
Alexey Navoykov  
fxsaber:

Скорее не понимаю, как здесь не может не быть рекурсии. Кто-нибудь рассудит.

Ну это ж вы делаете какие-то заявления. С вас и объяснения. 

К слову, данный код у меня прекрасно компилировался и работал на старых билдах, но я всё-равно с любопытством выслушаю вашу версию )

Mesaoria
177
Mesaoria  
Для чего может быть нужен такой код?
Mesaoria
177
Mesaoria  
fxsaber:

Рекурсия.

Кстати, VС это еще на стадии компиляции чухнул ))

class Amba
{
public:
        Amba _Arr[1];
};

1>speed.cpp(2503): error C2148: total size of array must not exceed 0x7fffffff bytes
A100
2094
A100  
Mesaoria:

Кстати, VС это еще на стадии компиляции чухнул ))

Просто Вы неправильно перевели из MQL в С++
12
Авторизуйтесь или зарегистрируйтесь, чтобы добавить комментарий