...one of the most highly
regarded and expertly designed C++ library projects in the
world.
— Herb Sutter and Andrei
Alexandrescu, C++
Coding Standards
namespace boost { namespace algorithm { template<typename patIter> class knuth_morris_pratt; template<typename patIter, typename corpusIter> std::pair< corpusIter, corpusIter > knuth_morris_pratt_search(corpusIter, corpusIter, patIter, patIter); template<typename PatternRange, typename corpusIter> std::pair< corpusIter, corpusIter > knuth_morris_pratt_search(corpusIter corpus_first, corpusIter corpus_last, const PatternRange & pattern); template<typename patIter, typename CorpusRange> boost::disable_if_c< boost::is_same< CorpusRange, patIter >::value, std::pair< typename boost::range_iterator< CorpusRange >::type, typename boost::range_iterator< CorpusRange >::type > >::type knuth_morris_pratt_search(CorpusRange & corpus, patIter pat_first, patIter pat_last); template<typename PatternRange, typename CorpusRange> std::pair< typename boost::range_iterator< CorpusRange >::type, typename boost::range_iterator< CorpusRange >::type > knuth_morris_pratt_search(CorpusRange & corpus, const PatternRange & pattern); template<typename Range> boost::algorithm::knuth_morris_pratt< typename boost::range_iterator< const Range >::type > make_knuth_morris_pratt(const Range & r); template<typename Range> boost::algorithm::knuth_morris_pratt< typename boost::range_iterator< Range >::type > make_knuth_morris_pratt(Range & r); } }