标准C 11是否保证在函数调用之前创建传递给函数的临时对象?
标准C 11是否保证在开始执行函数之前创建了所有3个临时对象?
即使临时对象传递为: >对象 http://ideone.com/EV0hSP #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; } 输出: T created T created T created func-start 0,0 func-end T destroyed T destroyed T destroyed 工作草案,编程语言标准C 2016-07-12:http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2016/n4606.pdf
但是可以在func-start之后创建T中的任何一个吗? 或者有没有办法将参数作为g / r / l / x / pr-value传递,以便在创建临时对象之前启动函数? 解决方法
[intro.execution]/16:
(编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |