// PR c++/66962 // { dg-do compile { target c++2a } } template struct remove_cv; template struct is_reference; template void declval(); template struct is_constructible; template struct is_nothrow_constructible; template using remove_cv_t = typename remove_cv<_Tp>::type; template struct Trans_NS_extension_apply_list; template using _t = typename T::type; template void ImplicitlyConvertibleTo(); template void Assignable(); template int ConstructibleObject = requires { T{}; }; template concept BindableReference = is_reference::value && is_constructible::value; template concept Constructible = ConstructibleObject || BindableReference; template concept DefaultConstructible = Constructible && requires { new T[0]; }; template concept MoveConstructible = Constructible && ImplicitlyConvertibleTo; template concept Movable = MoveConstructible && Assignable; template int Swappable_ = requires { 0; }; template int Swappable(); template concept Dereferencable = requires{{0};}; template using RvalueReferenceType = decltype(0); template int IsValueType; template struct value_type; template requires IsValueType<_t>>> using ValueType = _t>>; template concept Readable = Movable && DefaultConstructible && Dereferencable && requires{{0};}; template concept MoveWritable = Movable && DefaultConstructible && Dereferencable; template concept IndirectlyMovable = Readable && Movable> && Constructible> && MoveWritable> && MoveWritable>; template requires IndirectlyMovable int is_nothrow_indirectly_movable_v = is_nothrow_constructible>::value; template requires IndirectlyMovable && IndirectlyMovable void iter_swap2();