LINUX.ORG.RU

свой move для семантики перемещения

 ,


1

1

Имеется некоторый класс A:

template <class T> class A {
     T* t;
     A(const A & a): t(0) {                    
          std::cout << "копирующий конструктор\n"; 
          // t = new .....   
     }
     A(A && a): t(0) {                    
          std::cout << "перемещающий конструктор\n";
          // t = a.t .....     
     }
};  

помогите написать MyMove аналог std::move, чтобы срабатывал перемещающий конструктор, а не копирующий:

A<int> b(25);
A<int> a(MyMove(b));

P.S. std::move устраивает, просто хочу разобраться. Мой неудачный опыт:

template <class T> 
T&& MyMove(T&& a) {    return a; }
// или
T&& Move(T&& a) { return static_cast<T&&>(a); }
с такими функциями вызывается копирующий конструктор.



Последнее исправление: linux276 (всего исправлений: 1)

Вот так будет работать:

template <class T>
T&& Move(T& a)
{
    return static_cast<T&&>(a);
}

andreyu ★★★★★
()
Ответ на: комментарий от linux276

а что это вообще такое???

Дефолтная реализация, очевидно.

DarkEld3r ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.