http://gcc.gnu.org/bugzilla/show_bug.cgi?id=57107
Markus Trippelsdorf <markus at trippelsdorf dot de> changed: What |Removed |Added ---------------------------------------------------------------------------- CC| |markus at trippelsdorf dot | |de --- Comment #2 from Markus Trippelsdorf <markus at trippelsdorf dot de> 2013-04-29 09:00:33 UTC --- Reduced: class A { public: template <typename _Tp1> struct rebind { typedef A other; }; ~A() {} }; template <typename _Alloc> struct __alloc_traits { template <typename _Tp> struct rebind { typedef typename _Alloc::template rebind<_Tp>::other other; }; }; template <typename _Tp, typename _Alloc> struct B { typedef typename __alloc_traits<_Alloc>::template rebind<_Tp>::other _Tp_alloc_type; struct C : _Tp_alloc_type { C(_Tp_alloc_type) : _Tp_alloc_type() {} }; typedef _Alloc allocator_type; B(int, const allocator_type &p2) : _M_impl(p2) {} C _M_impl; }; template <typename _Tp, typename _Alloc = A> class D : B<_Tp, _Alloc> { typedef B<_Tp, _Alloc> _Base; public: typedef _Tp value_type; typedef _Alloc allocator_type; D(const value_type &p1, const allocator_type &p2 = allocator_type()) : _Base(0, p2) { _M_fill_initialize(p1); } void _M_fill_initialize(const value_type &); }; void _setjmp(); void writeQImageToPng() { _setjmp(); D<unsigned*>(0); }