Переиспользование parameter pack
От: koenjihyakkei Россия  
Дата: 29.02.20 07:49
Оценка: 5 (1)
Есть такой код:

#include <iostream>
#include <vector>

struct Base {};
struct Foo : public Base {};
struct Bar : public Base {};
struct FooFoo : public Foo {};

template<typename... Args>
struct TypeHolder {
    static std::vector<Base*> Instantiate() {
        return {(new Args)...};
    }
};

using TypeHolder1 = TypeHolder<Base, Foo, FooFoo>;
using TypeHolder2 = TypeHolder<Bar, Base>;


template<typename TypeHolderT>
std::vector<Base*> Instantiate() {
    return { /* ??? */};
}

int main()
{
    auto v1 = TypeHolder1::Instantiate();
    auto v2 = TypeHolder2::Instantiate();
    
    return 0;
}


Можно ли как то метод TypeHolder::Instantiate() вынести из класса? То есть как можно переиспользовать parameter pack, переданный классу, извне этого класса?
Отредактировано 29.02.2020 7:53 koenjihyakkei . Предыдущая версия .
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.