|
2 / 2 / 1
Регистрация: 28.09.2013
Сообщений: 255
|
||||||||||||||||
Что происходит когда std::move применяется для int?19.03.2016, 00:41. Показов 7236. Ответов 23
Метки нет (Все метки)
Мне, вроде бы, понятно как работает std::move() на классах типа string. Но мне непонятно что будет в данном случаи.
Добавлено через 3 минуты Эквивалентно ли
0
|
||||||||||||||||
| 19.03.2016, 00:41 | |
|
Ответы с готовыми решениями:
23
Vector::swap и std::move - что эффективнее? Объяснить для чего используется ref и out, точнее их значение и когда применяется |
|
161 / 153 / 92
Регистрация: 18.11.2015
Сообщений: 677
|
|||||||
| 19.03.2016, 01:13 | |||||||
0
|
|||||||
|
2 / 2 / 1
Регистрация: 28.09.2013
Сообщений: 255
|
|
| 19.03.2016, 01:32 [ТС] | |
|
Это студия? У меня все работает в minGW. Вы хоть с++11 включили?
0
|
|
|
6691 / 4102 / 1607
Регистрация: 09.05.2015
Сообщений: 9,569
|
||||||||||||||||
| 19.03.2016, 02:03 | ||||||||||||||||
0
|
||||||||||||||||
|
27 / 27 / 18
Регистрация: 13.09.2014
Сообщений: 137
|
|
| 19.03.2016, 02:05 | |
|
vab9petryk, в 15 студии не работает...
А происходит только то, что std::move возвращает rvalue reference и ничего больше, если не ошибаюсь
1
|
|
|
Вездепух
12919 / 6787 / 1817
Регистрация: 18.10.2014
Сообщений: 17,169
|
|||||||
| 19.03.2016, 02:28 | |||||||
|
Все прекрасно "работает" в 15 студии
0
|
|||||||
| 19.03.2016, 02:31 | |
|
0
|
|
|
Вездепух
12919 / 6787 / 1817
Регистрация: 18.10.2014
Сообщений: 17,169
|
||
| 19.03.2016, 02:33 | ||
Сообщение было отмечено vab9petryk как решение
Решениеstd::move никогда ни с чем ничего не делает. Ни для int, ни для std::string, ни для чего либо еще. std::move - это не более чем приведение типа - к соответствующему типу &&, т.е. к rvalue reference. И все.Какое-то "делание" с этим rvalue reference будет производить уже тот, кому это rvalue reference будет передано дальше. Для std::string это будет конструктор перемещения std::string. Именно он выполняет "опустошение" исходного std::string.Для типа int инициализация с int && в правой части ничего с исходным объектом не делает. Т.е. исходный int остается нетронутым.
3
|
||
|
27 / 27 / 18
Регистрация: 13.09.2014
Сообщений: 137
|
|
| 19.03.2016, 02:37 | |
|
TheCalligrapher, нашел ошибку. Имена переменных были одинаковые.
Только странно, что студия выдает 'int &&' differs in levels of indirection from 'int', а не 'refNum': redefinition; multiple initialization
0
|
|
|
Вездепух
12919 / 6787 / 1817
Регистрация: 18.10.2014
Сообщений: 17,169
|
||
| 19.03.2016, 02:39 | ||
|
0
|
||
|
8973 / 4319 / 960
Регистрация: 15.11.2014
Сообщений: 9,760
|
|
| 19.03.2016, 16:36 | |
|
1
|
|
|
-41 / 49 / 5
Регистрация: 10.01.2017
Сообщений: 1,915
|
||
| 29.10.2019, 19:16 | ||
|
0
|
||
|
Вездепух
12919 / 6787 / 1817
Регистрация: 18.10.2014
Сообщений: 17,169
|
||
| 29.10.2019, 19:21 | ||
std::move никак не меняется. Результат std::move привязан к тому же самому адресу в памяти. что и аргумент."Компилятор думал, что объект временный" - это неформальный (и не совсем корректный) способ сказать, "чтобы компилятор думал, что объект является xvalue". Xvalue - это значение, которое обозначает объект, находящийся в конце своей жизни. Так как объект находится в конце своей жизни, его ресурсы можно переиспользовать для других целей (вместо того, чтобы просто уничтожить). Например, переместить их в другой объект. Вот таким образом std::move разрешает перемещение.
2
|
||
|
зомбяк
1585 / 1219 / 345
Регистрация: 14.05.2017
Сообщений: 3,940
|
|
| 29.10.2019, 19:22 | |
|
Optimus11, например у тебя объект с динамически выделенными данными в куче (например тот же std::string, хранящий там строку ). Тебе надо, чтобы эти данные без перевыделения в новом месте и перекопирования из старого места кучи в новое оказались у нового объекта. Вызываешь конструктор перемещения, и у старой std::string отбирают эти данные в куче и передают другой строке. Взамен создаётся выделение для пустой строки.
Для иных случаев конструктор перемещения бесполезен.
1
|
|
|
-41 / 49 / 5
Регистрация: 10.01.2017
Сообщений: 1,915
|
||
| 29.10.2019, 19:35 | ||
![]() Что за новый обьект, у которого должны оказатся эти данные ? Чем новый обьект не устроит указатель на данные в куче ?
0
|
||
|
зомбяк
1585 / 1219 / 345
Регистрация: 14.05.2017
Сообщений: 3,940
|
||
| 29.10.2019, 19:38 | ||
|
Добавлено через 1 минуту А "указатель, указывающий в никуда" при попытке использования приведёт к вылету программы.
1
|
||
|
-41 / 49 / 5
Регистрация: 10.01.2017
Сообщений: 1,915
|
|||
| 29.10.2019, 19:44 | |||
|
0
|
|||
|
Вездепух
12919 / 6787 / 1817
Регистрация: 18.10.2014
Сообщений: 17,169
|
||
| 29.10.2019, 20:42 | ||
type - это именно объектный тип.(В общем случае, если type может быть и ссылочным типом, то эквивалентность нарушается и более правильно говорить, что std::move(obj) - это (remove_reference_t<type>&&) obj, как заметил Croessmah)
1
|
||
| 29.10.2019, 20:42 | |
|
Помогаю со студенческими работами здесь
20
Что означает запись std::int? Что означает std::string to_string( int value )? Как проинициализировать std::stack<const int> obj ( std::stack<int>{} );
Что происходит, когда мужчина влюблён? Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
||||
|
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта
Симптом:
После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
|
Access
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
|
Новый ноутбук
volvo 07.12.2025
Всем привет.
По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне:
Ryzen 5 7533HS
64 Gb DDR5
1Tb NVMe
16" Full HD Display
Win11 Pro
|
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
|
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
|
|
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов
На странице:
https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/
нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
|
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов.
. . .
|
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
|
Мысли в слух
kumehtar 18.11.2025
Кстати, совсем недавно имел разговор на тему медитаций с людьми. И обнаружил, что они вообще не понимают что такое медитация и зачем она нужна. Самые базовые вещи. Для них это - когда просто люди. . .
|
Создание Single Page Application на фреймах
krapotkin 16.11.2025
Статья исключительно для начинающих. Подходы оригинальностью не блещут.
В век Веб все очень привыкли к дизайну Single-Page-Application .
Быстренько разберем подход "на фреймах".
Мы делаем одну. . .
|