Вопросы по теме 'copy-elision'

Будут ли компиляторы автоматически применять семантику перемещения в методе установки?
Я хочу знать, разрешено ли компилятору автоматически использовать конструктор перемещения для wstring в следующем методе установки (без явного вызова std::move): void SetString(std::wstring str) { m_str = str; // Will str be moved into m_str...
759 просмотров

Точный момент возврата в C++-функции
Вроде глупый вопрос, но однозначно ли определен точный момент, в который return xxx; "выполняется" в функции? Пожалуйста, посмотрите следующий пример, чтобы понять, что я имею в виду ( вживую ): #include <iostream> #include...
4270 просмотров

Разрешение перегрузки: предпочтителен ли оператор прямого преобразования (как следствие исключения копирования)?
Данный struct E { }; struct P { explicit P(E) {} }; struct L { operator E() {return {};} operator P() {return P{E{}};} }; Должно ли выражение P{L{}} компилироваться в соответствии со стандартом языка C ++ 17? Разные...
178 просмотров

Инициализация члена для некопируемой переменной в C++17
При выполнении инициализации элемента для некопируемой переменной (например, std::atomic<int> ) необходимо использовать direct-initialization , а не copy-initialization в соответствии с ответом здесь . Однако, когда я включаю -std=c++17...
631 просмотров

Есть ли ошибка в том, как я пытаюсь создать временный объект?
Ниже приведен мой код: я не понимаю, почему конструктор перемещения не вызывается. Mystring.h: #ifndef _MYSTRING_H #define _MYSTRING_H #include<iostream> #include<cstring> #endif class Mystring{ private: char * str; public:...
54 просмотров

Требуется ли удаление перемещения в случае инициализации списка копий в С++ 20?
Пожалуйста, рассмотрите следующую программу С++ 20: #include <iostream> struct A { A() {} A( const A& ) = delete; A( A&& ) { std::cout << "m "; } }; int main() { [[maybe_unused]] A a = {{A{}}}; }...
63 просмотров
schedule 16.12.2023