STD Container Constructors
STD container constructors look very similar. For a given container Container, the following constructors are expected to be provided:
Container();
template< class InputIt >
Container( InputIt first, InputIt last,
const Allocator& alloc = Allocator() );
template< class InputIt >
Container( InputIt first, InputIt last,
const Allocator& alloc )
: Container(first, last, alloc) {}
Container( const Container& other );
Container( const Container& other, const Allocator& alloc );
Container( Container&& other );
Container( Container&& other, const Allocator& alloc );
Container( std::initializer_list<value_type> init,
const Allocator& alloc = Allocator() );
Container( std::initializer_list<value_type> init,
const Allocator& alloc )
: Container(init, alloc) {}
template< container-compatible-range<value_type> R >
Container( std::from_range_t, R&& rg,
const Allocator& alloc = Allocator() );
template< container-compatible-range<value_type> R >
Container( std::from_range_t, R&& rg,
const Allocator& alloc )
: Container(std::from_range, std::forward<R>(rg), alloc) {}