A type A meets the proto-allocator requirements if A is CopyConstructible (C++ 2014 [copyconstructible]), Destructible (C++ 2014 [destructible]), and allocator_traits<A>::rebind_alloc<U> meets the allocator requirements (C++ 2014 [allocator.requirements]), where U is an object type. [ Note: For example, allocator<void> meets the proto-allocator requirements but not the allocator requirements. — end note ] No comparison operator, copy operation, move operation, or swap operation on these types shall exit via an exception.