아래의 주석 처리 된 행의 실행 순서가 보장됩니까? 내 컴파일러와쉼표로 구분 된 명령문의 반환 값 수명
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