Копировать/перемещать Elision во время вызова функции с временнымC++

Программы на C++. Форум разработчиков
Ответить
Anonymous
 Копировать/перемещать Elision во время вызова функции с временным

Сообщение Anonymous »

В программе ниже, функция f принимает свой аргумент типа A по значению и вызывается с временным a () .

Код: Выделить всё

#include 

struct A {
~A() { printf("~A() "); }
};

void f(A) {}

int main() {
f(A());
}
Я проверил, что GCC, Clang и EDG All Print ~ a () здесь, что означает, что копирование или перемещение временного. Онлайн демонстрация: https://gcc.godbolt.org/z/b4hr7rxgz
Поведение компилятора Microsoft здесь правильным в соответствии со стандартом?>

Подробнее здесь: https://stackoverflow.com/questions/796 ... -temporary
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C++»