dervish_candela: (Dervish)
[personal profile] dervish_candela
моя бошка уже немного пухнет, но вот что я понял.

std::move(x) ничего не двигает. оно просто приводит тип к rvalue (&&x), то есть мы явно говорим что объект x нам больше не нужен.

втихую move contructor генерится только для POD (не совсем так, но смысл именно такой).
совершенно точно нельзя передвинуть класс, если у него явно запрещён copy contructor и при этом не определён явно move contructor.

есть некий middle gorund вида const T& ← &&T , то есть rvalue will bind to a const lvalue reference
то есть, класс с нетривиальным конструктором можно передвинуть, если он is_move_contructible<T>, то есть std::is_constructible<T,T&&> (его можно сконструировать из rvalue)
например так работает конструктор копирования из T(const T&) и инициализирцет T из временного выражения &&T

иными словами, подвинуть некопируемый объект нельзя. никак. нихт. нада.
такие классы нужно инстанцировать в хозяйствующий указыватель unique_ptr<T> и передвигать это хозяйство с помощью std::move(unique_ptr<T>)
в частности, никак невозможно и нельзя подвинуть QObject, и это by design, именно потому что правильно скопировать identity class (уникальный объект) просто невозможно по определению.
для этого у них у всех запрещены конструктор T(const T&) и присваиватель T& operator=(const T&) макросом Q_DISABLE_COPY


а вот RVO всё может, потому что он не языковая механика, а компиляторная.
From:
Anonymous( )Anonymous This account has disabled anonymous posting.
OpenID( )OpenID You can comment on this post while signed in with an account from many other sites, once you have confirmed your email address. Sign in using OpenID.
User
Account name:
Password:
If you don't have an account you can create one now.
Subject:
HTML doesn't work in the subject.

Message:

 
Notice: This account is set to log the IP addresses of everyone who comments.
Links will be displayed as unclickable URLs to help prevent spam.

April 2017

S M T W T F S
       1
234 5678
9101112131415
16171819202122
23242526272829
30      

Most Popular Tags

Style Credit

Expand Cut Tags

No cut tags
Page generated Sep. 23rd, 2017 09:20 am
Powered by Dreamwidth Studios