волнуюший вопрос. Может ли быть универсальный конструктор копирования и универсальный оператор присваивания в классе? Если есть класс MyClass с одним полем int x и конструкторами:
MyClass(MyClass&& other) noexcept : x_(move(other.x_)) {}MyClass(const MyClass& other) : x_(other.x_){}
То как будет выглядеть универсальная версия (через универсальную ссылку), чтобы заменить эти 2 на 1? Я представляю это типа:
template <typename T>
MyClass(T&& mc);
А как ты хочешь совместить ссылку на константу и рвалью ссылку?
А, логично. Это единственная причина, по которой универсальных конструкторов и операторов класса не бывает или есть еще глубже что-то?
так чем тебе это не универсальный? template <typename T> MyClass(T&& mc);
Обсуждают сегодня