Информация об изменениях

Сообщение move-ctor от 02.04.2019 11:08

Изменено 02.04.2019 11:08 niXman

move-ctor
привет!

увы, не могу воспроизвести пример в хеловорде.

есть приблизительно такой код:
struct type {
    type(const type &) = delete;
    type& operator= (const type &) = delete;

    type(int fd) {}

    type(type &&r) {}        // 1: hand-writen move ctor
    //type(type &&) = default; // 2:

};

type func(int fd) {
    type r{fd};

    return r; // <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
}


вопрос в том, почему при использовании "hand-writen move ctor" код компилится, но если его закомментить и раскомментить автосгенеренный — получаю "use of deleted function ‘type::type(type &&)" ?

структура 'type' на самом деле содержит "move-only" член.
move-ctor
привет!

увы, не могу воспроизвести пример в хеловорде. телепаты приветствуются =)

есть приблизительно такой код:
struct type {
    type(const type &) = delete;
    type& operator= (const type &) = delete;

    type(int fd) {}

    type(type &&r) {}        // 1: hand-writen move ctor
    //type(type &&) = default; // 2:

};

type func(int fd) {
    type r{fd};

    return r; // <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
}


вопрос в том, почему при использовании "hand-writen move ctor" код компилится, но если его закомментить и раскомментить автосгенеренный — получаю "use of deleted function ‘type::type(type &&)" ?

структура 'type' на самом деле содержит "move-only" член.