inline iterator_range< BOOST_STRING_TYPENAME range_iterator<RangeT>::type> find_head( RangeT& Input, int N) { return find(Input, head_finder(N)); }
inline void erase_head( SequenceT& Input, int N ) { find_format( Input, head_finder(N), empty_formatter( Input ) ); }
inline SequenceT erase_head_copy( const SequenceT& Input, int N ) { return find_format_copy( Input, head_finder(N), empty_formatter( Input ) ); }
inline iterator_range< BOOST_STRING_TYPENAME result_iterator_of<CollectionT>::type> find_head( CollectionT& Input, unsigned int N) { return head_finder(N)( begin(Input),end(Input)); }
inline iterator_range< BOOST_STRING_TYPENAME range_result_iterator<RangeT>::type> find_head( RangeT& Input, int N) { return head_finder(N)( begin(Input),end(Input)); }
inline void replace_head( SequenceT& Input, unsigned int N, const RangeT& Format ) { find_format( Input, head_finder(N), const_formatter(Format) ); }
inline SequenceT replace_head_copy( const SequenceT& Input, unsigned int N, const RangeT& Format ) { return find_format_copy( Input, head_finder(N), const_formatter(Format) ); }
inline OutputIteratorT erase_head_copy( OutputIteratorT Output, const RangeT& Input, int N ) { return find_format_copy( Output, Input, head_finder(N), empty_formatter( Input ) ); }
inline OutputIteratorT replace_head_copy( OutputIteratorT Output, const Range1T& Input, unsigned int N, const Range2T& Format ) { return find_format_copy( Output, Input, head_finder(N), const_formatter(Format) ); }