I will firstly admit that I don't know if exception throws /should/ use rvalue reference constructors - the proposed working at http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2006/n2118.html doesn't mention it, but one certainly would have thought it would.
In my project I have a destructively copied exception class. Currently, the standard copy constructor simply moves a pointer to an internal state object which contains a large amount of debug data eg; stack backtraces. Without this the debug build can be very slow and stack usage dangerous (there is a bug in MSVC where copy construction of an exception during a throw doesn't release previous copies which causes quick exhaustion of the stack). I have tried to add an rvalue reference constructor under the idea that with -std=c++0x it would implement move semantics more legally than at current. Unfortunately, g++ really wants to use the copy constructor for a thrown exception and won't accept a rvalue copy constructor. Is this intentional? -- Summary: [C++-0X] Exception throws don't use rvalue reference constructors Product: gcc Version: 4.3.0 Status: UNCONFIRMED Severity: normal Priority: P3 Component: c++ AssignedTo: unassigned at gcc dot gnu dot org ReportedBy: s_gccbugzilla at nedprod dot com http://gcc.gnu.org/bugzilla/show_bug.cgi?id=36461