// PR c++/71092 // { dg-do compile { target c++11 } } template struct A { using type = _Default; }; template class> using __detected_or = A<_Default>; template class _Op> using __detected_or_t = typename __detected_or<_Default, _Op>::type; template struct B { typedef _Tp value_type; }; struct C { template using __pointer = typename _Tp::pointer; }; template struct J : C { using pointer = __detected_or_t; }; template void _Construct(_T1 *) { new _T1; } struct D { template static _ForwardIterator __uninit_default_n(_ForwardIterator p1, _Size) { _Construct(p1); return _ForwardIterator(); } }; template void __uninitialized_default_n(_ForwardIterator p1, _Size) { D::__uninit_default_n(p1, 0); } template void __uninitialized_default_n_a(_ForwardIterator p1, _Size, _Tp) { __uninitialized_default_n(p1, 0); } template struct __shared_ptr { constexpr __shared_ptr() : _M_ptr(), _M_refcount() {} int _M_ptr; int _M_refcount; }; template struct F { typedef _Alloc _Tp_alloc_type; struct G { typename J<_Tp_alloc_type>::pointer _M_start; G(_Tp_alloc_type); }; F(int, _Alloc p2) : _M_impl(p2) {} G _M_impl; }; template > struct K : F<_Alloc> { typedef _Alloc allocator_type; K(int, allocator_type p2 = allocator_type()) : F<_Alloc>(0, p2) { __uninitialized_default_n_a(this->_M_impl._M_start, 0, 0); } }; struct H { H(); struct I { __shared_ptr trigger[1]; }; __shared_ptr resetTrigger_; K states_; __shared_ptr triggerManager_; }; __shared_ptr a; H::H() : states_(0), triggerManager_(a) {}