This is an unofficial snapshot of the ISO/IEC JTC1 SC22 WG21 Core Issues List revision 117a. See http://www.open-std.org/jtc1/sc22/wg21/ for the official list.
2025-04-13
[Moved to DR at the November, 2014 meeting.]
Presumably a temporary bound to a reference in a non-static data member initializer should be treated analogously with what happens in a ctor-initializer, but the current wording of 6.7.7 [class.temporary] paragraph 5 is not clear on this point.
See also issue 1815 for similar questions regarding aggregate initialization.
Proposed resolution (June, 2014):
Add the following after 9.5.2 [dcl.init.aggr] paragraph 7:
If an aggregate class C contains a subaggregate...
Delete the first bullet of 6.7.7 [class.temporary] paragraph 5:
The second context is when a reference is bound to a temporary.117 The temporary to which the reference is bound or the temporary that is the complete object of a subobject to which the reference is bound persists for the lifetime of the reference except:
A temporary bound to a reference member in a constructor's ctor-initializer (11.9.3 [class.base.init]) persists until the constructor exits....
Insert the following as a new paragraph after 11.9.3 [class.base.init] paragraph 7:
In a non-delegating constructor, if a given potentially constructed subobject...
Insert the following as a new paragraph after 11.9.3 [class.base.init] paragraph 9:
In a non-delegating constructor, the destructor for each potentially constructed subobject...
This resolution also resolves issue 1815.