Недавно я спросил this вопрос, но теперь я хотел бы его расширить. Я написал следующий класс:
template <class T>
class X{
public:
vector<T> v;
template <class T>
X(T n) {
v.push_back(n);
}
template <class T, class... T2>
X(T n, T2... rest) {
v.push_back(n);
X(rest...);
}
};
При создании объекта с помощью
X<int> obj(1, 2, 3); // obj.v containts only 1
Вектор содержит только первое значение, но не другие. Я проверил и увидел, что конструктор называется 3 раза, поэтому я, вероятно, создаю временные объекты и заполняя их векторы остальными аргументами. Как решить эту проблему?