Каково происхождение семантики перемещения в C ++? - PullRequest
5 голосов
/ 15 февраля 2012

Мне интересно, каково происхождение семантики перемещения в C ++?В частности, это было изобретено специально для этого языка или было что-то похожее на других языках?В последнем случае не могли бы вы дать некоторые ссылки.

Ответы [ 2 ]

6 голосов
/ 15 февраля 2012

Кажется, что нет какого-либо конкретного предка этой концепции. Происхождение семантики перемещения C ++, как отмечалось в первоначальном предложении , было обсуждение в группах новостей:

Семантика перемещения в различных формах обсуждалась на форумах C ++ (большинство особенно comp.lang.c ++. модерируется) в течение многих лет.

На мой взгляд, они тесно связаны с понятием l ++ значений и значений r в C ++, которое, если я не ошибаюсь, является чисто концепцией C ++. Язык, который не имеет lvalues, rvalues ​​и их новых друзей в C ++ 11, не нуждается в семантике перемещения в том виде, в котором их реализует C ++.

В более общем смысле, концепция перемещения, а не копирования, является просто фундаментальной концепцией. Всякий раз, когда вы пишете связанный список и «меняете элементы», просто заменяя указатели на них, вы делаете «ход». В принципе.

1 голос
/ 15 февраля 2012

Вы можете прочитать «Предложение по добавлению поддержки семантики Move к языку C ++» , чтобы получить больше информации о мотивации концепции, а также о том, почему для этого нужна прямая языковая поддержка, а не реализовано с использованием библиотечных средств.

...