Ответ 1
Вы не можете инициализировать динамически выделенный массив таким образом. Таким образом, вы не можете назначить массив (динамический или статический). Этот синтаксис действителен только при инициализации статического массива, т.е.
int a[4] = {2, 5, 6, 4};
Я имею в виду, что даже следующее незаконно:
int a[4];
a = {1, 2, 3, 4}; //Error
В вашем случае вы ничего не можете сделать, кроме как скопировать значение каждого элемента вручную
for (int i = 1; i<=size; ++i)
{
grid[i-1] = i;
}
Вы можете избежать явного цикла с помощью stl-алгоритмов, но идея та же
Некоторые из них, возможно, стали законными в С++ 0x, я не уверен.