copy vs move, помогите разобраться
От: rg45 СССР  
Дата: 12.02.16 14:54
Оценка: 57 (4)
Такой простой пример: http://ideone.com/LCNVpe
   struct A
   {
      A() = default;
      A(const A&) = default;
      A(A&&) = delete;
   };

   A foo(const A& a) { return a; }        // (1) success: use of the copy constructor
   A foo(A&& a)      { return a; }        // (2) success: use of the copy constructor
   A foo(A a)        { return a; }        // (3) error: use of deleted function 'A::A(A&&)'
   A foo()           { A a; return a; }   // (4) error: use of deleted function 'A::A(A&&)'

   int main()
   {
   }

Не могу взять в толк, почему в 3-м и 4-м случаях он не может обойтись копированием, а требует move конструктор?
--
Справедливость выше закона. А человечность выше справедливости.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.