Вопросы по теме 'move-semantics'
Переместить конструктор/оператор=
Я пытаюсь узнать о новой функции C++, а именно о перемещении конструктора и назначении X::operator=(X&&) , и я нашел интересный пример , но единственное, что я даже не понимаю, но больше не согласен, это одна строка в операторе перемещения и...
1510 просмотров
schedule
17.06.2023
Использование семантики перемещения с std::pair или std::tuple
Предположим, вы хотите воспользоваться преимуществами семантики перемещения, но один из ваших перемещаемых классов должен быть частью класса std::pair . Цель состоит в том, чтобы создать функцию, которая возвращает std::pair , которую можно...
14349 просмотров
schedule
13.06.2022
Есть ли в 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 просмотров
schedule
05.07.2022
Правильный способ (семантика перемещения) для возврата 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 просмотров
schedule
10.01.2023
Предоставление правильной семантики движений
В настоящее время я пытаюсь понять, как правильно выполнять семантику перемещения с объектом, который содержит указатель на выделенную память. У меня есть большая структура данных, которая содержит внутренний необработанный указатель на фактическое...
6551 просмотров
schedule
30.04.2023
Какие библиотеки Boost используют преимущества Move Semantics
Ссылки Rvalue и семантика Move — это основная функция C++11, которая может значительно ускорить код за счет уменьшения количества ненужных копий. STL был обновлен, чтобы использовать эту новую функцию, когда используется компилятор c++ 11/0x...
1507 просмотров
schedule
12.06.2022
Деструктор вызывается перед конструктором перемещения?
У меня есть функция, которая выглядит примерно так, она возвращает некопируемый класс с помощью movesemantics:
MyClass&& MyFunction() {
MyClass myClass;
do some stuff;
return std::move(myClass);
}
И тогда к нему обращается...
632 просмотров
schedule
09.06.2023
Неявная обработка возвращенного 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 просмотров
schedule
30.01.2023
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 просмотров
schedule
09.03.2023
Класс 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