// PR c++/104008 // { dg-do compile { target c++11 } } template struct conjunction; template struct disjunction; template struct is_same; template struct enable_if; template using enable_if_t = typename enable_if<_Cond>::type; struct B; struct __uniq_ptr_impl { struct _Ptr { using type = B *; }; using pointer = _Ptr::type; }; struct unique_ptr { using pointer = __uniq_ptr_impl::pointer; unique_ptr(pointer); }; template using IsOneOf = disjunction...>; template struct any_badge; struct badge { badge(any_badge<>); badge(); }; template struct any_badge { template ...>::value>> any_badge(); }; template unique_ptr make_unique(_Args... __args); struct B { B(badge); unique_ptr b_ = make_unique(badge{}); }; template unique_ptr make_unique(_Args... __args) { return new B(__args...); }