Reduced from https://github.com/openscad/openscad/issues/1575 #include <utility> template <class T> struct B; template <class T> struct A { A(A&&) = default; A(const B<T> &); }; template <class T> struct B { std::pair<A<T>,int> a; B(B&&) = default; }; bool b = std::is_move_constructible<A<int> >::value; This seems similar to bug 65760.
Mine.
Created attachment 38179 [details] First stab at a patch Initial patch done, testsuite additions to follow, will submit once compile-farm testing is done.
Author: ville Date: Tue Apr 5 11:31:30 2016 New Revision: 234743 URL: https://gcc.gnu.org/viewcvs?rev=234743&root=gcc&view=rev Log: PR libstdc++/70437 * include/bits/stl_pair.h (_ConstructiblePair, _ImplicitlyConvertiblePair, _MoveConstructiblePair, _ImplicitlyMoveConvertiblePair): Add shortcut conditions for same-type cases. * testsuite/20_util/pair/70437.cc: New. Added: trunk/libstdc++-v3/testsuite/20_util/pair/70437.cc Modified: trunk/libstdc++-v3/ChangeLog trunk/libstdc++-v3/include/bits/stl_pair.h
Fixed.