В программе ниже, функция 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