Suppose my constructors (A5) takes a parameter pack. I want it to forward the first N elements to one member constructor (B) and the rest to another (C). Both member constructors taking parameter packs as well. Is there a way to do it?
template<int N> struct B;
template<int N> struct C;
template<int N, typename ...Args>
auto get_first(Args&&... args);
template<int N, typename ...Args>
auto get_last(Args&&... args);
template<int N>
struct A5
{
B<N> b;
C<5-N> c;
template<typename ...Args>
A5(Args&&... args)
: b(get_first<N>(args)...) // how this might look like?
, c(get_last<5-N>(args)...)
{}
};
Problem in my case is, that the number of arguments needed for the constructors of B and C depends on the non-type parameter.
It would be nice to know how to implement something like get_first and get_last. If it's not possible, I'd be interested in why.
Also, suggestions for other possible solutions or workarounds would be appreciated.
This was probably asked before, but I cannot find any related questions.
Thanks in advance!
Aucun commentaire:
Enregistrer un commentaire