Шаблоны Variadic: создание массива времени компиляции - PullRequest
0 голосов
/ 02 июня 2018

У меня есть функция, которую я хочу использовать для создания массива во время компиляции.

template<typename... uint32_t> 
static constexpr auto AddressArray(uint32_t... ns) { 
    return std::array<uint32_t, sizeof ...(uint32_t)>{ ns... }; 
}

Когда я использую этот код, я получаю ошибку компилятора

`compiler is out of heap space.` 

Чтоя делаю не так?

1 Ответ

0 голосов
/ 02 июня 2018

Вместо того, чтобы указывать пачку типов, лучше указать тип для массива и пачку для значений:

template<typename T, T ...vals> 
static constexpr auto AddressArray() { 
    return std::array<T, sizeof...(vals)>{ vals... }; 
}

Пример использования:

auto array = AddressArray<int, 1, 2, 4, 5>();
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...