是否有规则说明std :: tuple的成员以何种顺序销毁?C++ std :: tuple的销毁顺序
例如,如果Function1
返回std::tuple<std::unique_ptr<ClassA>, std::unique_ptr<ClassB>>
到Function2
,然后可以我确信(当Function2
范围是左侧)的ClassB
由所述第二构件中提到的实例是由所指的的ClassA
实例之前销毁第一个成员?
std::tuple< std::unique_ptr<ClassA>, std::unique_ptr<ClassB> > Function1()
{
std::tuple< std::unique_ptr<ClassA>, std::unique_ptr<ClassB> > garbage;
get<0>(garbage).reset(/* ... */);
get<1>(garbage).reset(/* ... */);
return garbage;
}
void Function2()
{
auto to_be_destroyed = Function1();
// ... do something else
// to_be_destroyed leaves scope
// Is the instance of ClassB destroyed before the instance of ClassA?
}
我猜测它主要取决于如何在标准库中实现'std :: tuple'。 – Arunmu
我找不到指定'std :: tuple'销毁顺序的规范。可能应该提交为未指定。 – 101010
http://stackoverflow.com/a/27663655/576911 –