The following code gives segmentation fault:
#include <iostream> #include <ctime> #include <vector> #include <list> #include <cstddef> #include <algorithm> class SomeClass { public: typedef std::vector<int> TypeVector; TypeVector vec; enum { VectorSize= 100 }; public: SomeClass(); SomeClass(const SomeClass &); bool operator<(const SomeClass &argSomeClass) const { return vec[0]< argSomeClass.vec[0]; } }; int main() { using namespace std; srand(time(0)); const size_t SIZE=1000; typedef vector<SomeClass> Vector; typedef list<SomeClass> List; cout<< "\nCreating vector with "<< SIZE<< " elements..."<< flush; Vector vec(SIZE); cout<<" Done!\n\n"<< flush; List lis; cout<< "Filling list with vector elements..."<< flush; for(Vector::size_type i= 0; i< vec.size(); ++i) lis.push_back(vec[i]); cout<< " Done!\n\n"<< flush; clock_t timeBeginVector, timeEndVector, timeBeginList, timeEndList; cout<< "Timing the sorting of the vector..."<< flush; // Diagnostic code line. Should output 1000 and 100 // cout<< endl<< vec.size()<< endl<< vec[0].vec.size()<< endl; timeBeginVector= clock(); sort(vec.begin(), vec.end()); timeEndVector= clock(); cout<< " Done!\n\n"<< flush; cout<< "Timing the sorting of the list..."<< flush; timeBeginList= clock(); lis.sort(); timeEndList= clock(); cout<< " Done!\n\n"<< flush; cout<< "The sorting of the vector took " << static_cast<double>((timeEndVector- timeBeginVector))/ CLOCKS_PER_SEC << " seconds\n\n"; cout<< "The sorting of the list took " << static_cast<double>((timeEndList- timeBeginList))/ CLOCKS_PER_SEC << " seconds\n\n"; } SomeClass::SomeClass():vec(VectorSize) { using namespace std; for(TypeVector::size_type i= 0; i< vec.size(); ++i) vec[i]= rand(); sort(vec.begin(), vec.end()); } SomeClass::SomeClass(const SomeClass &):vec(VectorSize) { using namespace std; for(TypeVector::size_type i= 0; i< vec.size(); ++i) vec[i]= rand(); sort(vec.begin(), vec.end()); } -- Summary: Segmentation fault Product: gcc Version: 4.2.3 Status: UNCONFIRMED Severity: blocker Priority: P3 Component: c++ AssignedTo: unassigned at gcc dot gnu dot org ReportedBy: ivranos at freemail dot gr GCC host triplet: Ubuntu 8.04 x86 GCC target triplet: Ubuntu 8.04 x86 http://gcc.gnu.org/bugzilla/show_bug.cgi?id=37721