下面三个注释行的执行顺序是否得到保证?
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());
}
使用我的编译器,shared_ptr
返回的 byf()
似乎一直持续到 aftersecond()
被调用。但这是否由标准以及其他编译器保证?