шаг У меня есть класс шаблона с VARIADIC конструктором шаблона:VARIADIC конструктор шаблонов и конструктор
template<typename T, int nb = 1>
class MyClass
{
/* ... some stuff here ... */
template<typename... Ts>
MyClass(Ts... ts)
{
/* ... some code ... */
}
}
Как определить конструктор перемещения
MyClass(MyClass&& source)
Для не шаблонных конструкторов то, что я обычно делаю : построить объект tmp
типа MyClass, для которого я std::swap
каждый член с *this
, а затем я заменяю каждый элемент source
на *this*
. Теперь tmp
содержит весь мусор *this*
имел, и я просто пусть сфера моего конструктора заботиться о удаляемого tmp
...
Но здесь я застрял и не знаю, как построить мой MyClass tmp(???)
объект.
Easy, вы были почти там: 'MyClass (MyClass && source)/* ... еще несколько вещей здесь ... * /' –
В чем проблема? Что имеет конструктор переменных с конструктором перемещения? – 101010
Как создать объект 'tmp'? Я не уверен, сколько аргументов я должен поставить там ... должен ли я просто вызвать вручную соответствующий конструктор в зависимости от внутреннего состояния 'source'? Как я могу вызвать конструктор для построения tmp, сколько аргументов, какого типа? – MCF