https://gcc.gnu.org/bugzilla/show_bug.cgi?id=65051
Bug ID: 65051 Summary: [5 Regression] r210436 regression? Product: gcc Version: 5.0 Status: UNCONFIRMED Severity: normal Priority: P3 Component: c++ Assignee: unassigned at gcc dot gnu.org Reporter: jakub at gcc dot gnu.org template<typename T> struct wrap { typedef T type; }; template <class T> class rv: public wrap <T>::type {}; template <class value_type> struct circular_buffer { typedef const value_type& param_value_type; typedef rv< value_type >& rvalue_type; void push_back(param_value_type item) {} void push_back(rvalue_type item) {} }; union U { int i; char c; }; void f(circular_buffer<U> b, const U& u) { b.push_back(u); } used to be accepted until r210435, since r210436 it is rejected. Jon said that this is accepted by clang and EDG.