Я хотел бы создать функцию шаблона, принимающую std::array в качестве нетипового аргумента template для любого N (вы можете сделать это, начиная с C++20).
Явно я могу сделать это так:
Код: Выделить всё
#include
template
void foo() {}
int main() {
foo();
}
Мой вопрос: могу ли я каким-то образом вывести N? Например, что-то вроде этого:
Код: Выделить всё
#include
template
void bar() {}
int main() {
bar();
}
Вышеуказанное не может скомпилироваться, поскольку N используется до его объявления.
-----
Более широкий контекст: на самом деле мне нужен шаблон, принимающий 2 таких массива, чтобы я мог вызывать его следующим образом:
Разделение на два набора чисел является существенным. Вероятно, я мог бы определить специальное значение разрыва и просто использовать шаблон с переменным числом значений:
но это похоже на уродливый хак. Не говоря уже о дополнительной сложности в реализации foo, где теперь нужно найти BREAK и получить размеры двух наборов чисел.
Подробнее здесь:
https://stackoverflow.com/questions/798 ... e-argument