Я пытаюсь понять разницу в предупреждении, которое дает gcc-4.3.2 и
GCC-4.5.1.
Учитывая
struct S { };
int main() {
int** i;
i = new int*[10] ; delete[] i; // [1a]
i = new (int*[10]); delete[] i; // [1b]
S** s;
s = new S*[10]; // [2a] fine
s = new (S*[10]); // [2b] warning: lambda expressions only available with -std=c++0x or -std=gnu++0x
}
Я понимаю, что [1a]
и [2a]
правильно инициализируют динамический массив
указатели с неинициализированными указателями.
У нас есть экземпляры [2b]
в нашей кодовой базе, где кто-то действительно хотел
[2a]
. С лучшей поддержкой C ++ 0x в gcc-4.5.1 [2b]
внезапно запускается
предупреждение.
У меня вопрос: что бы на самом деле сделал * 1015 в C ++ 0x? И что это
разница с [1b]
, которая выглядит нормально в gcc-4.5.1? [2b]
делал
правильно с gcc-4.3.2 и C ++ 03?
PS. Я знаю о контейнерах STL.