Здравствуйте, Аноним, Вы писали:
А>почему вместо
А>А>template<typename ForwardIter,
А> typename OutputIter, typename UnaryPred>
А>OutputIter copy_if(ForwardIter begin, ForwardIter end,
А> OutputIter dest, UnaryPred f) {
А> while(begin != end) {
А> if(f(*begin))
А> *dest++ = *begin;
А> ++begin;
А> }
А>
А>нельзя написать так:
А>А>template<typename ForwardIter,
А> typename OutputIter, typename UnaryPred>
А>OutputIter copy_if(ForwardIter begin, ForwardIter end,
А> OutputIter dest, UnaryPred f) {
А> while(begin != end) {
А> if(f(*begin))
А> *dest++ = *begin++;
А> }
А>
потому что f(*begin) может вернуть false.