以下のコメント行の実行順序は保証されていますか?私のコンパイラでカンマ区切り文での戻り値の有効期間
struct S
{
S() { /* called 1st */ }
~S() { /* called 3rd */ }
};
boost::shared_ptr<S> f()
{
return boost::shared_ptr<S>(new S);
}
int second() { return 0; /* called 2nd */ }
int test()
{
return (f(), second());
}
、f()
によって返さshared_ptr
はsecond()
が呼び出された後まで持続しているようです。しかしこれは標準のコンパイラによって保証されていますか?
[一時的な生涯]の可能な複製(http://stackoverflow.com/questions/4214153/lifetime-of-temporaries) – fredoverflow