不思議に思っている-私は次の関数を書いた
template <class T, size_t N>
T* asFlatArray (T arr[][N])
{
// some code
}
そしてそれを次のように呼び出します
asFlatArray(myArray); // where myArray is int myArray[some_size][sime_size];
コンパイルはエラーなしで実行されます。しかし、「arr」を次のように参照に変更すると
template <class T, size_t N>
T* asFlatArray (T (&arr)[][N])
{
// some code
}
エラーが発生します:
parameter ‘arr’ includes reference to array of unknown bound ‘T [][N]’
私はそれを修正する方法を知っています
template <class T, size_t Rows, size_t Columns>
T* asFlatArray (T (&arr)[Rows][Columns])
しかし、なぜそれが起こっているのか理解できませんか?