Вызов Microsoft :: WRL :: Make для конструктора с более чем 9 аргументами

Microsoft::WRL::Make кажется, определено максимум 9 аргументов, которые будут перенаправлены в конструктор объекта. std::tuple это очевидное решение, но далеко не идеальное. Есть ли более элегантный способ решения этой проблемы?

Если кто-то из тех, кто сопровождает WRL, скрывается, добавьте поддержку шаблона variadic в Make (так же как RuntimeClassи т.д. пока ты на нем)

0

Решение

FWIW, вот мое текущее рабочее решение:

template <typename... Types>
MyClass(std::tuple<Types...> args) :
MyClass(args, std::make_integer_sequence<size_t, sizeof...(Types)>())
{
}

template <typename... Types, size_t... Indices>
MyClass(std::tuple<Types...>& args, std::integer_sequence<size_t, Indices...>) :
MyClass(std::get<Indices>(std::move(args))...)
{
}

Построен с

auto ptr = Make<MyClass>(std::forward_as_tuple(...));

Далеко от идеала, но в худшем случае это подойдет …

0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]