Skip to content

Latest commit

 

History

History

move-semantics

Folders and files

NameName
Last commit message
Last commit date

parent directory

..
 
 
 
 
 
 
 
 

L-value и R-value

L-value - идентифицируемое место в памяти (т.е. имеет адрес). R-value - определяет исключительным путем, т.е. это не L-value. Каждое выражение либо L-value, либо R-value. Так что R-value это выражение которое не представляет объект занимающий некоторое идентифицируемое место в памяти.

// Оператор присваивания (assignment) предполагает L-value в качестве левого операнда.

int i = 10;  // i имеет адрес в памяти и поэтому это L-value.

int i;
10 = i;  // 10 не имеет идентифицируемого местонахождения в памяти и поэтому это R-value, нет смысла присваивать i десяти.

std::move

std::move просто cast'ит объект к T&&, с объектом ничего не случается.

По старой доброй традиции C++ remove не изымает, delete не стирает, а move не перемещает :)