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