Возможно ли передать исходный стол функции по значению? Я считаю, что это невозможно, но я ищу официальные источники, чтобы это подтвердить.Таблица pass по значению
Я знаю, как передать таблицу по ссылке:
template<typename T, size_t N, size_t M>
void first_example(T (&table_in_function)[N][M]) {
//...
}
//...
int a[50][20];
//...
first_example(a);
или std::array, но, как я грустный, я ищу решение для сырых таблиц. Простая идея, удалите &
, очевидно, неправильно. Также я не ищу что-то вроде:
template<typename T, size_t N, size_t M>
void third_example(T (&temp_ref)[N][M]) {
T local_table[N][M];
//...
}
Я принимаю решения, такие как магический код и мета-программирование.
Из-за устаревшего ограничения (из-за C) невозможно иметь параметры массива верхнего уровня. Вместо этого вы должны использовать что-то вроде 'std :: array'. (Или оберните его в свой собственный класс/структуру). – Rufflewind
@ Rufflewind: Пожалуйста, опубликуйте ответы как _answers_. –
@ Rufflewind Это то, чего я ожидал. (Просто мало надежды, что это возможно.) Однако я не видел официальных источников, чтобы это доказать. Спасибо за ваш комментарий. :) – Tacet