「Effective STL」という本を読んでいるときに、著者は a をどのようcopy_if
に記述できるかの例を示しています。これは、標準アルゴリズムには存在しないためです。著者のバージョンは次のとおりです。
template <typename Input, typename Output,typename Predicate>
OutputIterator copy_if(Input begin , Input end, Output destBegin, Predicate p)
{
while(begin != end)
{
if(p(*begin)) *destBegin++=*begin;
++ begin;
}
return destBegin;
}
今私の質問は、作者がその方法を次のようにどのように使用できるかです:
copy_if(widg.begin(),widg.end(),ostream_iterator<widg>(cerr,"\n"),isDefective);
私の質問は、テンプレートパラメータがcopy_ifで定義されていないのはなぜですか(3が必要なため)、このように
copy_if<p1,p2,p3>(...)