Вопросы по теме 'copy-elision'
Будут ли компиляторы автоматически применять семантику перемещения в методе установки?
Я хочу знать, разрешено ли компилятору автоматически использовать конструктор перемещения для wstring в следующем методе установки (без явного вызова std::move):
void SetString(std::wstring str)
{
m_str = str; // Will str be moved into m_str...
759 просмотров
schedule
23.02.2024
Точный момент возврата в C++-функции
Вроде глупый вопрос, но однозначно ли определен точный момент, в который return xxx; "выполняется" в функции?
Пожалуйста, посмотрите следующий пример, чтобы понять, что я имею в виду ( вживую ):
#include <iostream>
#include...
4270 просмотров
schedule
24.09.2022
Разрешение перегрузки: предпочтителен ли оператор прямого преобразования (как следствие исключения копирования)?
Данный
struct E
{
};
struct P
{
explicit P(E) {}
};
struct L
{
operator E() {return {};}
operator P() {return P{E{}};}
};
Должно ли выражение P{L{}} компилироваться в соответствии со стандартом языка C ++ 17?
Разные...
178 просмотров
schedule
21.09.2022
Инициализация члена для некопируемой переменной в C++17
При выполнении инициализации элемента для некопируемой переменной (например, std::atomic<int> ) необходимо использовать direct-initialization , а не copy-initialization в соответствии с ответом здесь . Однако, когда я включаю -std=c++17...
631 просмотров
schedule
20.01.2024
Есть ли ошибка в том, как я пытаюсь создать временный объект?
Ниже приведен мой код: я не понимаю, почему конструктор перемещения не вызывается.
Mystring.h:
#ifndef _MYSTRING_H
#define _MYSTRING_H
#include<iostream>
#include<cstring>
#endif
class Mystring{
private:
char * str;
public:...
54 просмотров
schedule
08.03.2024
Требуется ли удаление перемещения в случае инициализации списка копий в С++ 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