* uses-allocator construction * iterators model forward/random access iter types but are in the input iter category * iter value_type is pair<const T &, U &>/pair<const T &, const U &> (zip iter types) * no risky UBs due to type punning or destroy/construct within a vector