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

Скопируйте исключение в Visual C++ 2010 Beta 2
Я читал Хотите скорость? Передайте по значению в блоге C++ Next и создайте эту программу , чтобы понять семантику исключения копирования и перемещения в C++0x: #include <vector> #include <iostream> class MoveableClass {...
979 просмотров

скопировать элизион видимый побочный эффект
Рассмотрим этот код: #include <iostream> using namespace std; struct Foo { public: int _a{}; Foo(int a) : _a{a} { std::cout << "ctor" << std::endl; } Foo(const Foo &) { std::cout...
510 просмотров
schedule 30.09.2022

С++ 11 копирует элисон и исключение (аргумент перехвата)
После проверки кода у нас возникла проблема с копированием elison в блоке try/catch. После прочтения этой страницы: справочное руководство по cpp и особенно этот абзац: При обработке исключения, если аргумент предложения catch имеет тот же тип...
356 просмотров

Копировать elision, std::move и связанные вызовы функций
Я исследовал, как ведет себя копирование elision, когда оно не назначено напрямую lvalue и, возможно, связано или используется в будущем, но не нашел конкретных ответов. Для начала я понимаю, что NRVO происходит в следующем примере, а возвращаемое...
372 просмотров

Правильное распространение переменной decltype (auto) из функции
(Это продолжение от " Существуют ли реалистичные варианты использования переменных `decltype (auto)`? " ) Рассмотрим следующий сценарий - я хочу передать функцию f другой функции invoke_log_return , которая: Invoke f ; Напечатайте...
778 просмотров
schedule 05.12.2023

Скопируйте Elision в визуал 2019
Я пытался протестировать небольшой код, чтобы проверить, копирует ли мой компилятор (под Visual Studio 2019) elision, поскольку в некоторых случаях в C++ 17 это необязательно. Итак, я попробовал код ниже: #include <iostream> #include...
264 просмотров

Скопируйте исключение для захваченных локальных переменных в возвращаемой лямбде
Возможно ли (или гарантировано) исключить конструкцию копирования (перемещения) в захвате по значению ( [x] ) (или C++14 захвата перемещения [x = std::move(x)] ) в лямбда-выражении (как возвращаемое значение)? auto param_by_value(Widget w) {...
134 просмотров
schedule 09.03.2023

Я не могу найти цитату в [class.copy.elision], подтверждающую, что инициализация `T x = T();` имеет право на обязательное удаление копии
cppreference.com приводит два случая обязательных пропусков copy/ операции перемещения . Меня интересует второй случай следующим образом: При инициализации объекта, когда выражением инициализатора является значение prvalue того же типа...
68 просмотров
schedule 03.02.2024

Скопировать эллипс тривиального типа, ошибка в GCC?
Я провожу несколько тестов с тривиальными типами с копированием. В качестве моего предыдущего вопроса: Копировать elision и тривиально копируемые типы Следующий код хорошо работает для std::string , но не для const char* . Valgrind возвращает...
135 просмотров

Является ли std::declval устаревшим из-за гарантированного удаления копии?
Утилита стандартной библиотеки declval определена как: template<class T> add_rvalue_reference_t<T> declval() noexcept; Добавить здесь ссылку на значение rvalue кажется хорошей идеей, если вспомнить о языке, когда он был...
85 просмотров

Когда начинается NRVO? Какие требования должны быть удовлетворены?
У меня есть следующий код. #include <iostream> struct Box { Box() { std::cout << "constructed at " << this << '\n'; } Box(Box const&) { puts("copy"); } Box(Box &&)...
130 просмотров
schedule 24.06.2022