Неявно заявленные операции на ходу не возвращаются к копированию?

, я читаю N3291» 12.8. (11/15/28) Копирование и перемещение объектов классов класса. Copy] «Исправьте, что неявно заявленный Constructor

  • выполняет элемент MOVE всех нестатических элементов данных (вероятно, через соответственно определенный T (T &&)
  • И если какой-либо не ATIC-элемент данных не может быть перемещен, неявный шаг-конструктор будет помечен как удален и не пытался быть скопированным как «зажал»? (Да, перемещение определено для встроенных типов, но на самом деле является копией).

и аналогично перемещению , используя , используя соответствующую T оператор = (T &&) элементов.

Пример:

struct CopyOnly {
    CopyOnly();
    CopyOnly(const CopyOnly&);
}; // declaring a copy means no implicit move.

struct Question {
    std::vector data_;
    CopyOnly         copyOnly_;
};

В вопросе

struct CopyOnly {
    CopyOnly();
    CopyOnly(const CopyOnly&);
}; // declaring a copy means no implicit move.

struct Question {
    std::vector data_;
    CopyOnly         copyOnly_;
};

класс

  • будет неявно заявлено Copy-Constructor и Назначение
  • будет иметь неявно заявленное Constructor и MOVE-ASSED , , но они будут = DELETE D , потому что нестатический элемент данных data_ Подходит только , но не подвижный ?

Обновление. Побочный вопрос: для Вопрос q; будет STD :: Move (Q) Все еще работает? Будет ли там неудачу скопировать там? Или будет неявно объявлено Project-CTOR Force, чтобы компилятор остановиться с ошибкой? здесь Это скомпилируется.

Обновление 2. Что означает компилятор для недвижимых данных-членов данных, если я объявляю вопрос MOVE-CTOR (вопрос &&) = по умолчанию ? Это тогда Foxback для копирования тех?

6
задан Johannes Schaub - litb 3 October 2011 в 17:56
поделиться