You need variable templates (C ++ 11 function).
#include <initializer_list>
struct T {};
struct U {};
class Q {
public:
template <class ...ArgTypes>
Q(T t, ArgTypes... args) : Q(t, {args...}) {}
private:
Q(T t, std::initializer_list<U> us) {}
};
int main() {
T t1;
U u1, u2, u3, u4;
Q {t1, u1, u2, u3, u4};
}
It is still typeafe - only type structures are allowed U.
source
share