- size_t n = IndexForInsert(lItem, fnCompare); \
- \
- return (n >= size() || \
- (*fnCompare)(&lItem, &(*this)[n])) ? wxNOT_FOUND : (int)n; \
+ Predicate p((SCMPFUNC)fnCompare); \
+ const_iterator it = std::lower_bound(begin(), end(), lItem, p); \
+ return (it != end() && \
+ p(lItem, *it)) ? (int)(it - begin()) : wxNOT_FOUND; \