Вопросы по теме 'move-constructor'
реализация std::move
Я получил следующий фрагмент из Майкрософт
template <typename T> struct RemoveReference {
typedef T type;
};
template <typename T> struct RemoveReference<T&> {
typedef T type;
};
template <typename T>...
506 просмотров
schedule
07.12.2022
Семантика перемещения с членом std::vector
Извините, если об этом уже спрашивали, но, насколько я понимаю, в С++ 11 std::vector имеет конструктор перемещения, так что копии почти ничего не стоят в определенных ситуациях, например, возвращая единицу по значению. Однако, если у меня есть...
3469 просмотров
schedule
15.07.2022
Ошибка конструктора перемещения unordered_set/map в VC10?
Похоже, что конструкторы перемещения unordered_set/map в VC10 (Visual Studio 2010) переводят правую часть в неопределенное состояние после вызова, что приводит к сбою других операций (таких как «вставка»). Операторы присваивания перемещения работают...
641 просмотров
schedule
19.07.2022
Код неожиданно не компилируется. Почему?
Взгляните на следующий пример кода, в котором используется класс uncopiable , аналогичный boost::noncopyable :
#include <vector>
class uncopiable {
using self = uncopiable;
protected:
uncopiable() {}
~uncopiable() {}...
154 просмотров
schedule
26.04.2022
Move Constructor vs Copy Elision. Какой из них вызывается?
У меня есть два фрагмента кода, чтобы показать вам. Это два класса, каждый из которых предоставляет конструктор перемещения и функцию, которая возвращает временное значение.
В первом случае функция, возвращающая временное значение, вызывает...
3111 просмотров
schedule
13.03.2022
Присвоение из rvalue разрешено, когда оператор присваивания явно удален?
Рассмотрим следующий код, который компилируется в Clang, GCC и VS 2015 ( онлайн-пример ):
#include <utility>
class S
{
public:
S(int x) : i(x) { }
~S() { }
S(S&&) = default;
S(const S& ) = delete;...
139 просмотров
schedule
17.01.2023
Почему конструктор перемещения требует конструктора по умолчанию для своих членов?
Я пытался реализовать конструктор перемещения для класса без конструктора копирования. Я получил ошибку, что конструктор по умолчанию для члена класса отсутствует.
Вот тривиальный пример, иллюстрирующий это:
struct A {
public:
A() =...
1825 просмотров
schedule
12.04.2023
Каков порядок присваиваний внутри конструктора перемещения по умолчанию?
В настоящее время я работаю над собственным распределителем на С++. Этот распределитель должен регулярно дефрагментировать свою память, перемещая память и объекты. Эти сдвиги всегда нисходящие, а это означает, что адрес перемещаемого фрагмента...
144 просмотров
schedule
28.03.2023
Copy ctor вызывается вместо move ctor
Почему при возврате из bar вызывается конструктор копирования вместо конструктора перемещения?
#include <iostream>
using namespace std;
class Alpha {
public:
Alpha() { cout << "ctor" << endl; }
Alpha(Alpha &) { cout...
224 просмотров
schedule
12.04.2023
std::vector, похоже, предпочитает копировать, а не перемещать конструкцию при автоматическом изменении размера
Кажется, что когда std::vector изменяет свой размер (например, при вставке нового элемента и нехватке места), он использует конструктор копирования своих элементов, а не их конструктор перемещения, даже если они имеют оба.
Это общее правило,...
389 просмотров
schedule
19.11.2022
RVO и удаленный конструктор перемещения в C++14
Я узнал о (N) RVO в течение последних нескольких дней. Как я читал о cppreference в статье об исключении копии для С++ 14:
... компиляторам разрешено, но не требуется пропускать конструкцию копирования и перемещения (начиная с С++ 11) объектов...
639 просмотров
schedule
06.07.2023
Наследование конструкторов копирования и перемещения базового класса с использованием ключевого слова
Я хочу унаследовать конструктор копирования базового класса, используя ключевое слово using :
#include <iostream>
struct A
{
A() = default;
A(const A &) { std::cerr << __PRETTY_FUNCTION__ << std::endl; }
A(...
1746 просмотров
schedule
09.01.2023
Как в C++ можно предсказать, будет ли вызываться семантика перемещения или копирования?
Учитывая широту, которую компилятор C++ имеет в создании экземпляров временных объектов и в вызове механизмов, таких как оптимизация возвращаемого значения и т. д., не всегда ясно, глядя на какой-либо код, будет ли вызываться семантика перемещения или...
65 просмотров
schedule
17.02.2023
Как отключить создание/копирование объектов вне фабричного метода?
У меня есть класс с очень большой полезной нагрузкой, поэтому очень дорого создавать/копировать/перемещать экземпляр этого класса. Поскольку они не изменятся после завершения инициализации приложения, нет необходимости создавать временные объекты...
119 просмотров
schedule
15.11.2022
определяемый компилятором конструктор перемещения с деструктором
Согласно ссылке cpp cpp-ref , компилятор не генерирует перемещение по умолчанию конструктор, если у нас есть определяемый пользователем деструктор.
Фрагмент кода:
class General
{
public:
~General();
General();
void...
50 просмотров
schedule
25.06.2022
Как я могу реализовать конструктор и оператор перемещения для unique_ptr как закрытый член класса
Я пытаюсь написать класс Matrix . Я использую unique_ptr в качестве массива указателей хранилища. Но этот unique_ptr является закрытым членом класса. Я хочу добавить конструктор перемещения в свой класс Matrix. Но мне нужна функция getter...
36 просмотров
schedule
20.11.2022
Конструктор неявного перемещения должен быть по возможности без исключения.
В основном по стандарту:
Конструктор-наследник (12.9) и неявно объявленная специальная функция-член (раздел 12) имеют спецификацию исключения . Если f является наследующим конструктором или неявно объявленным конструктором по умолчанию,...
49 просмотров
schedule
29.07.2023
Почему не вызывается конструктор перемещения переменной-члена?
Рассмотрим следующие классы. Если я реализую конструктор перемещения самостоятельно, как показано ниже, почему элемент панели b не перемещается, а копируется? Но если я использую конструктор перемещения по умолчанию, то b перемещается. Почему...
89 просмотров
schedule
18.08.2022
std::is_move_assignable_v false, хотя есть оператор присваивания перемещения
Контекст: у меня есть класс DLXMatrix с некоторым атрибутом, который является вектором некоторого локального класса с именем Header . Каждый Header содержит некоторый указатель на некоторые другие Header , которые ссылаются на элементы того...
84 просмотров
schedule
06.06.2024
Почему конструкторы перемещения неявно удаляются для моего класса?
Следующий код...
// main.cpp
#include <grpcpp/grpcpp.h>
class ClientContextContainer {
public:
ClientContextContainer( int i ) : i_(i) {}
private:
grpc::ClientContext client_context_;
int i_;
};
class ArrayContainer {
public:...
195 просмотров
schedule
11.10.2022