#include <iostream>
using namespace std;
struct T {
T() { std::cout << "T created \n"; }
int val = 0;
~T() { std::cout << "T destroyed \n"; }
};
void function(T t_obj, T &&t, int &&val) {
std::cout << "func-start \n";
std::cout << t_obj.val << ", " << t.val << ", " << val << std::endl;
std::cout << "func-end \n";
}
int main() {
function(T(), T(), T().val);
return 0;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgp1c2luZyBuYW1lc3BhY2Ugc3RkOwoKc3RydWN0IFQgeyAKICAgIFQoKSB7IHN0ZDo6Y291dCA8PCAiVCBjcmVhdGVkIFxuIjsgfQogICAgaW50IHZhbCA9IDA7CiAgICB+VCgpIHsgc3RkOjpjb3V0IDw8ICJUIGRlc3Ryb3llZCBcbiI7IH0KfTsKCnZvaWQgZnVuY3Rpb24oVCB0X29iaiwgVCAmJnQsIGludCAmJnZhbCkgewogICAgc3RkOjpjb3V0IDw8ICJmdW5jLXN0YXJ0IFxuIjsKICAgIHN0ZDo6Y291dCA8PCB0X29iai52YWwgPDwgIiwgIiA8PCB0LnZhbCA8PCAiLCAiIDw8IHZhbCA8PCBzdGQ6OmVuZGw7CiAgICBzdGQ6OmNvdXQgPDwgImZ1bmMtZW5kIFxuIjsKfQoKaW50IG1haW4oKSB7CgogICAgZnVuY3Rpb24oVCgpLCBUKCksIFQoKS52YWwpOwoKICAgIHJldHVybiAwOwp9