fbpx ...

Move semantics in C++

Move semantics is a key feature of C++11. It allows optimizing code execution by avoiding unnecessary copy operations. Not utilizing it is a missed optimization chance.

We will analyse such code

  template <typename T>
typename std::remove_reference<T>::type&& move(T&& obj) noexcept {
    using ReturnType = std::remove_reference<T>::type&&;
    return static_cast<ReturnType>(obj);
}
  
  class Object;

void f(const Object&) { std::cout << "const Object&\n"; }
void f(Object&)       { std::cout << "Object&\n"; }
void f(Object&&)      { std::cout << "Object&&\n"; }

template <typename T>
void use(T&& g) {
    f(std::forward<T>(g)); // forwards original type to f()
}  

Your abilities after Move semantics in C++ training

Agenda

Activities

Duration

Form

Order Move semantics in C++ training

Related trainings

Modern C++

Move semantics is a key feature of C++11.
Declarations of = default; and = delete; are discussed deeply in this training.

Memory management

Move semantics is used by smart pointers

Templates

Knowledge of templates can help to understand what type is exactly deduced in template parameters and how perfect forwarding can be combined with variadic templates
ninjaletter

Już uciekasz?

Zanim to zrobisz, zapisz się na Ninjaletter, aby wiedzieć, co piszczy w C++. 

Informujemy, iż w celu realizacji usług dostępnych w naszym serwisie, optymalizacji jej treści, dostosowania strony do Państwa indywidualnych potrzeb oraz wyświetlania, personalizacji i mierzenia skuteczności reklam w ramach zewnętrznych sieci reklamowych korzystamy z informacji zapisanych za pomocą plików cookies na urządzeniach końcowych użytkowników. Pliki cookies można kontrolować za pomocą ustawień swojej przeglądarki internetowej. Dalsze korzystanie z naszego serwisu, bez zmiany ustawień przeglądarki internetowej oznacza, iż użytkownik akceptuje stosowanie plików cookies. Więcej informacji zawartych jest w polityce prywatności serwisu.