此代码符合C ++ 11标准吗?
功能原型:
void foo(double[] arr);
来电者:foo(std::vector<double>{0.0, 1.0, 2.0}.data())
详细说明:我正在做的是创建匿名临时 std::vector<double>
,提取数据(double*
)并将其传递给旧式函数{ {1}}。 (foo
事先知道foo
的大小。但它是否适用于每个召集会议?我担心如果在我完成内容之前从调用堆栈中弹出向量,arr
指针可能会失效。
答案 0 :(得分:3)
这很好;在评估完整表达式(12.2p3)时,临时表会被销毁,因此vector
至少会在调用foo
期间生效。