
Pavol Droba wrote:
The functionality is in cvs. I have added lexicographical_compare (also in i variant) and comparison predicates is_(i)less, is_not_(i)greater.
Check it out.
struct is_not_greater { template< typename T1, typename T2 > bool operator()( const T1& Arg1, const T2& Arg2 ) const { return Arg1>=Arg2; } };
=, isn't that is_not_less?
struct is_iless { is_iless( const std::locale& Loc=std::locale() ) : m_Loc( Loc ) {} template< typename T1, typename T2 > bool operator()( const T1& Arg1, const T2& Arg2 ) const { #if defined(__BORLANDC__) && (__BORLANDC__ >= 0x560) && (__BORLANDC__ <= 0x564) && !defined(_USE_OLD_RW_STL) return std::toupper(Arg1)<std::toupper(Arg2); #else return std::toupper(Arg1,m_Loc)<std::toupper(Arg2,m_Loc); #endif } } What about 'A' vs 'a'? Shouldn't 'A' < 'a'? I'm also wondering how expensive std::toupper is. Would it make sense to do a == first to avoid the std::toupper calls in certain cases?