C++03までのSTLには、std::xxx_if(..., Pred pred)に対応するalgorithm std::xxx(..., T t)が存在して、それはstd::xxx_if(..., std::bind2nd(std::equal_to<T>(), t))と同じことを行うようになっています。
この名前付け規則に従うと、もしstd::copy_if(first, last, result, pred)があるならば、範囲[first, last)についてtと等しいもののみをresult以降にコピーするalgorithm std::copy(first, last, result, t)が必要になってしまいます。こんなalgorithmはナンセンスですし、そもそもstd::copyはすでに普通のコピーをするalgorithmとして存在し
copy_if (スコア:3, 興味深い)
Re: (スコア:2, 参考になる)
一応補足を。
C++03までのSTLには、std::xxx_if(..., Pred pred)に対応するalgorithm std::xxx(..., T t)が存在して、それはstd::xxx_if(..., std::bind2nd(std::equal_to<T>(), t))と同じことを行うようになっています。
この名前付け規則に従うと、もしstd::copy_if(first, last, result, pred)があるならば、範囲[first, last)についてtと等しいもののみをresult以降にコピーするalgorithm std::copy(first, last, result, t)が必要になってしまいます。こんなalgorithmはナンセンスですし、そもそもstd::copyはすでに普通のコピーをするalgorithmとして存在し
Re:copy_if (スコア:1, すばらしい洞察)
その辺の事情は途中までは理解できるんですが、「だから、入れない」はやっぱり仕様のバグだったと思っています。命名規則に合わないのが問題だったら、名前を変えて入れれば良かったのです。choose でも pick でも remove_copy_unless でも、適切な名前はいくらでもあるでしょ。
もう、草案にcopy_ifが入ったんだから、文句をいっても実益はないけど。というか、これまで文句を言った人がたくさんいたから、今回の草案に入ったのでしょうね。