#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