title: Lifetime of temporary bound to aggregate initialized struct member
body: <p>Given the following code:</p>
  
  <pre><code>class foo
  {
  };
  
  class bar: public foo
  {
  public: 
      ~bar() { printf("~bar()\n"); }
  };
  
  class zab: public foo
  {
  public: 
      ~zab() { printf("~zab()\n"); }
  };
  
  struct foo_holder
  {
      const foo &amp;f;
  };
  
  int main()
  {
      foo_holder holder[]= { {bar()}, {zab()} };
      printf("done!\n");
      return 0;
  }
  </code></pre>
  
  <p>the output is:</p>
  
  <pre><code>~bar()
  ~zab()
  done!
  </code></pre>
  
  <p>C++0x has a clause that dictates this can create dangling references when used as a new initializer, but it says nothing (at least nothing I can find) about aggregate initialization of const references with temporaries.</p>
  
  <p>Is this unspecified behavior then?</p>