struct A { /* 〜 */ };
struct B { /* 〜 */ };

struct C
{
 A func()
 {
  B b;
  return a_;
 }

 A a_;
};

C::funcで、bのデストラクタはa_の戻り値コピーの後に行われました。
この順番は保証されているのでしょうか?