У меня есть шаблон функции, который принимает произвольно вложенный список и возвращает массив:
#include <array>
#include <initializer_list>
template<size_t N, typename List>
std::array<size_t,N> some_function (const List& list)
{
// N is the number of times the list is nested.
std::array<size_t,N> arr;
return arr;
}
Когда я использую эту функцию для некоторого вложенного std::initializer_list
, например:
int main () {
using List = std::initializer_list<std::initializer_list<double>>;
List list = {{1.,2.,3.},{4.,5.,6.}};
std::array<size_t,2> arr;
arr = some_function (list);
return 0;
}
Я получаю сообщение об ошибке, что тип N не может быть выведен
не удалось вывести параметр шаблона 'N'
Вопрос
- Как я могу улучшить свой шаблон функции для определения количества вложений списка?
- Есть ли в этом случае альтернативы лучше, чем
std::initializer_list
?