In brief : how to create variadic tuple from given types's child?
In code below there is erroneous type children in get_children call. The goal is to receive tuple with Child derived from given elements.
template<typename T>
class Elem{
public:
T e;
class Child{ public: T c; };
Child child() { return Child{ .c = e}; };
};
template <typename... T>
class Collection{
public:
using arr = std::tuple<T...>;
arr elems;
using children = std::tuple<T...::Child>; /// **** HERE IS ERROR ***
auto get_children(){
children res;
get_child<sizeof...(T)-1>( res );
return res;
}
private:
template< size_t Num >
auto get_child( children &res ){
std::get<Num>(res) = std::get<Num>(elems).child();
get_child<Num-1>(res);
}
template<>
auto get_child<0>( children &res ){
std::get<0>(res) = std::get<0>(elems).child();
}
};
Thanks in advance!