У меня проблема здесь.Я пытаюсь использовать decltype
в range-for
цикле для использования многомерного массива:
int a[][4]{
{0, 1, 2, 3 },
{4, 5, 6, 7 },
{8, 9, 10, 11}
};
for (auto& row : a) { // reference is needed here to prevent array decay to pointer
cout << "{";
for (auto col : row)
cout << col << ", ";
cout << "}" << endl;
}
decltype (*a) row{ *a};
cout << sizeof(row) << endl;
cout << typeid(row).name() << endl;
// for (decltype(*a) row : *a) {
// for (int col : row)
// cout << col << ", ";
// cout << endl;
// }
С auto
Я могу легко перебрать массив, но с decltype
это неработать для меня.
Что я получу выше, если я раскомментирую код: cannot convert from int to int(&)[4]
.