Я пытаюсь создать карту пар ключ-задача во время компиляции. Ключ - это порядковый номер, который также должен использоваться в качестве параметра шаблона внутри сопоставленных типов задач. Что я узнал, так это то, что мне нужно поднять мою задачу в метафункцию, чтобы она работала, но у меня уже возникают проблемы с созданием правильного hana::types
, соответствующего параметрам моего шаблона.
Это то, что я имею до сих пор:
template <std::size_t Key,
typename T = double,
template<typename...> class Complex = std::complex>
class Task
{
...
}
template <std::size_t Begin,
std::size_t End,
typename T,
template<typename...> class Complex = std::complex>
class TaskFactory
{
static constexpr auto create(void)
{
auto keys = hana::make_range(hana::int_c<Begin>, hana::int_c<End>);
return hana::unpack(keys, [](auto... key)
{
return hana::make_map(hana::make_pair(key, hana::template_<Task>(hana::type_c<key>, hana::type_c<T>, hana::type_c<Complex>)())...);
});
}
static constexpr auto taskMap_ = create();
...
}
int main()
{
TaskFactory<2, 8, double, std::complex> myTaskFactory;
return 0;
}
Кланг жалуется на:
ошибка: аргумент шаблона шаблона имеет параметры шаблона, отличные от соответствующего параметра шаблона
Что я делаю неправильно, и это правильный подход?
Лучший
Плетеные