是否有規則說明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 –