Вопросы по теме 'move-semantics'

Переместить конструктор/оператор=
Я пытаюсь узнать о новой функции C++, а именно о перемещении конструктора и назначении X::operator=(X&&) , и я нашел интересный пример , но единственное, что я даже не понимаю, но больше не согласен, это одна строка в операторе перемещения и...
1510 просмотров

Использование семантики перемещения с std::pair или std::tuple
Предположим, вы хотите воспользоваться преимуществами семантики перемещения, но один из ваших перемещаемых классов должен быть частью класса std::pair . Цель состоит в том, чтобы создать функцию, которая возвращает std::pair , которую можно...
14349 просмотров

Есть ли в D что-то похожее на семантику перемещения C++0x?
Проблема «типов значений» с внешними ресурсами (такими как std::vector<T> или std::string ) заключается в том, что их копирование, как правило, довольно дорого, а копии создаются неявно в различных контекстах, поэтому это, как правило, влияет...
3234 просмотров
schedule 13.11.2022

C++ семантика перемещения и исключения
Что происходит в готовящемся к выпуску стандарте C++0x, когда возникает исключение внутри/во время конструктора перемещения? Останется ли исходный объект? или как исходный, так и перемещаемый объект находятся в неопределенном состоянии? какие...
5340 просмотров
schedule 16.09.2022

Параметры значения неявно перемещаются при возврате по значению?
Рассмотрим следующую функцию: Foo foo(Foo x) { return x; } Будет ли return x вызывать конструктор копирования или конструктор перемещения? (Давайте оставим здесь NRVO в стороне.) Для исследования я написал простой класс Foo ,...
575 просмотров

Правильный способ (семантика перемещения) для возврата std::vector из вызова функции в С++ 11
Я хочу заполнить std::vector (или другой контейнер STL): class Foo { public: Foo(int _n, const Bar &_m); private: std::vector<Foo> fooes_; } 1.Красивый актер, высокая производительность std::vector<Foo>...
19971 просмотров

Предоставление правильной семантики движений
В настоящее время я пытаюсь понять, как правильно выполнять семантику перемещения с объектом, который содержит указатель на выделенную память. У меня есть большая структура данных, которая содержит внутренний необработанный указатель на фактическое...
6551 просмотров

Какие библиотеки Boost используют преимущества Move Semantics
Ссылки Rvalue и семантика Move — это основная функция C++11, которая может значительно ускорить код за счет уменьшения количества ненужных копий. STL был обновлен, чтобы использовать эту новую функцию, когда используется компилятор c++ 11/0x...
1507 просмотров

Деструктор вызывается перед конструктором перемещения?
У меня есть функция, которая выглядит примерно так, она возвращает некопируемый класс с помощью movesemantics: MyClass&& MyFunction() { MyClass myClass; do some stuff; return std::move(myClass); } И тогда к нему обращается...
632 просмотров

Неявная обработка возвращенного lvalue как rvalue
12.8 Копирование и перемещение объектов класса [class.copy] §31 и §32 говорят: в операторе return в функции с возвращаемым типом класса, когда выражение является именем энергонезависимого автоматического объекта (кроме функции или параметра...
582 просмотров
schedule 23.02.2023

переместить ctor класса с постоянным членом данных или ссылочным членом
У меня есть некоторые проблемы с пониманием того, когда и если вызывается конструктор перемещения или оператор присваивания перемещения, в частности, в контексте класса с постоянным элементом данных. Рассмотрим класс template<typename T>...
848 просмотров
schedule 04.06.2023

Продление срока службы временного объекта с помощью ссылки rvalue
Согласно другому ответу , ссылка rvalue не будет продлевать время жизни временного объекта, если выражение, ссылающееся на него, является выражением xvalue . Так как std::move возвращает ссылку rvalue, выражение ее вызова является значением x,...
2221 просмотров

C++11: написать конструктор перемещения с элементом atomic‹bool›?
У меня есть класс с атомарной переменной-членом: struct Foo { std::atomic<bool> bar; /* ... lots of other stuff, not relevant here ... */ Foo() : bar( false ) {} /* Trivial implementation fails in gcc 4.7 with: * error:...
13552 просмотров
schedule 17.04.2023

Ссылочные элементы данных и конструктор перемещения
Предполагая следующий код: class ChannelHandle; class SessionHandle; typedef ChannelHandle& ChannelHandleRef; typedef SessionHandle& SessionHandleRef; class RemoteChannelHandle { public: RemoteChannelHandle( ChannelHandleRef...
1320 просмотров
schedule 15.05.2022

std :: vector изменение размера с использованием небезопасного перемещения при отсутствии копии
Я создал класс для инкапсуляции некоторых функций из текстур OpenGL, мои требования довольно просты, поэтому мне не нужно больше, чем возможность управлять данными и типами текстур. Мой класс следующий (упрощенный): class Texture {...
531 просмотров
schedule 30.05.2023

Получение ошибки или, по крайней мере, предупреждения при использовании переменной, которая была std::move'ed в другом месте
Этот: void foo(int &&r) { std::cout << r << std::endl; } int main() { int i = 2; foo(std::move(i)); i = 3; //no warning. any way to get some warnings here? return 0; } Нет ли способа заставить компилятор выдать...
452 просмотров
schedule 24.08.2022

Почему std::weak_ptr не имеет конструктора перемещения или оператора присваивания перемещения?
Просматривая заголовки boost 1.53 для weak_ptr, я был удивлен, увидев, что назначение перемещения и конструкторы перемещения были реализованы, хотя они не были задокументированы. Из этой документации не требуется std::weak_ptr. для обеспечения...
1685 просмотров

Класс Enum C++11 по ссылке или значению
У меня в основном два вопроса, может быть, они связаны, поэтому я соберу их в один. Должны ли мы передавать класс перечисления в С++ 11 по ссылке или значению при переходе к функции. Это своего рода наследование примитивного типа, но передается ли...
4145 просмотров
schedule 11.10.2022

использование std::move для возврата результата функции
какой правильный? std::string get_string() { std::string result; // ... more operations. return std::move(result); } Or std::string&& get_string() { std::string result; // ... more operations...
111 просмотров
schedule 17.08.2022

Переместить std::vector из std::unique_locks
У меня есть структура данных, состоящая из нескольких «блоков». Для каждого блока у меня есть мьютекс. Я хочу реализовать метод, который блокирует всю структуру данных и перемещает эту блокировку в вызывающую функцию. Вот мой код:...
1018 просмотров
schedule 13.04.2022