------- Comment #2 from pinskia at gcc dot gnu dot org 2007-07-23 21:55 ------- The error message is: /home/apinski/x86-local-fsf/lib/gcc/i686-pc-linux-gnu/4.3.0/../../../../include/c++/4.3.0/bits/stl_algo.h:2789: instantiated from 'void std::sort(_RandomAccessIterator, _RandomAccessIterator) [with _RandomAccessIterator = __gnu_cxx::__normal_iterator<card*, std::vector<card, std::allocator<card> > >]' t1212.cc:17: instantiated from 'void cards<MyCard>::sort() [with MyCard = card]' t1212.cc:25: instantiated from here /home/apinski/x86-local-fsf/lib/gcc/i686-pc-linux-gnu/4.3.0/../../../../include/c++/4.3.0/bits/stl_algo.h:92: error: passing 'const card' as 'this' argument of 'bool card::operator<(const card&)' discards qualifiers
This is correct, you need to mark operator< as taking a const this variable. Like: bool operator<(const card & A)const { return this->id < A.id;}; Once doing that, the program compiles. -- pinskia at gcc dot gnu dot org changed: What |Removed |Added ---------------------------------------------------------------------------- Status|UNCONFIRMED |RESOLVED Component|c++ |libstdc++ Resolution| |INVALID http://gcc.gnu.org/bugzilla/show_bug.cgi?id=32851