Вопросы по теме 'copy-elision'
Скопируйте исключение в Visual C++ 2010 Beta 2
Я читал Хотите скорость? Передайте по значению в блоге C++ Next и создайте эту программу , чтобы понять семантику исключения копирования и перемещения в C++0x:
#include <vector>
#include <iostream>
class MoveableClass {...
979 просмотров
schedule
07.03.2023
скопировать элизион видимый побочный эффект
Рассмотрим этот код:
#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 просмотров
schedule
12.03.2023
Копировать elision, std::move и связанные вызовы функций
Я исследовал, как ведет себя копирование elision, когда оно не назначено напрямую lvalue и, возможно, связано или используется в будущем, но не нашел конкретных ответов.
Для начала я понимаю, что NRVO происходит в следующем примере, а возвращаемое...
372 просмотров
schedule
26.01.2023
Правильное распространение переменной 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 просмотров
schedule
20.02.2023
Скопируйте исключение для захваченных локальных переменных в возвращаемой лямбде
Возможно ли (или гарантировано) исключить конструкцию копирования (перемещения) в захвате по значению ( [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 просмотров
schedule
13.01.2023
Является ли std::declval устаревшим из-за гарантированного удаления копии?
Утилита стандартной библиотеки declval определена как:
template<class T> add_rvalue_reference_t<T> declval() noexcept;
Добавить здесь ссылку на значение rvalue кажется хорошей идеей, если вспомнить о языке, когда он был...
85 просмотров
schedule
04.05.2022
Когда начинается NRVO? Какие требования должны быть удовлетворены?
У меня есть следующий код.
#include <iostream>
struct Box {
Box() { std::cout << "constructed at " << this << '\n'; }
Box(Box const&) { puts("copy"); }
Box(Box &&)...
130 просмотров
schedule
24.06.2022