...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, typename traits = detail::BM_traits<patIter> > class boyer_moore; template<typename patIter, typename corpusIter> std::pair< corpusIter, corpusIter > boyer_moore_search(corpusIter, corpusIter, patIter, patIter); template<typename PatternRange, typename corpusIter> std::pair< corpusIter, corpusIter > boyer_moore_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 boyer_moore_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 > boyer_moore_search(CorpusRange & corpus, const PatternRange & pattern); template<typename Range> boost::algorithm::boyer_moore< typename boost::range_iterator< const Range >::type > make_boyer_moore(const Range & r); template<typename Range> boost::algorithm::boyer_moore< typename boost::range_iterator< Range >::type > make_boyer_moore(Range & r); } }