У меня есть шаблонная функция, которая принимает std::array
произвольного размера в качестве аргумента. Это выглядит примерно так:
template <size_t n>
void foo(const std::array<int, n>& numbers) {
for (const auto & number: numbers) {
// ... do stuff ...
}
}
Я могу назвать это, например, так:
std::array<int, 2> ints = {4, 5};
foo(ints);
и все в порядке.
К сожалению, я не могу вызвать функцию напрямую используя список инициализаторов. Этот код:
foo({4, 5});
выдает мне следующую ошибку:
error: no matching member function for call to 'foo'
note: candidate template ignored: couldn't infer template argument 'n'
Есть ли способ заставить мою функцию работать, используя список инициализаторов или что-то подобное?