I'm trying to solve a problem from an online judge and the judge uses g++ 4.8.5.
The following program compiles correctly on my machine (g++ 8.2.0) with -std=c++11 -pedantic-errors:
#include <algorithm>
using namespace std;
struct Task {
int deadline;
const bool operator<(const Task &o) {
return deadline < o.deadline;
}
};
Task tasks[] = {8, 4, 3, 5, 1, 2, 0, 7};
int main(void)
{
sort(tasks, tasks + 8);
}
However, the judge gives me the following errors:
In file included from /usr/include/c++/4.8/algorithm:62:0, from Main.cpp:1: /usr/include/c++/4.8/bits/stl_algo.h: In instantiation of '
_RandomAccessIterator std::__unguarded_partition(_RandomAccessIterator, _RandomAccessIterator, const _Tp&)[with_RandomAccessIterator = Task*; _Tp = Task]': /usr/include/c++/4.8/bits/stl_algo.h:2283:70: required from > '_RandomAccessIterator std::__unguarded_partition_pivot(_RandomAccessIterator, _RandomAccessIterator) [with_RandomAccessIterator = Task*]' /usr/include/c++/4.8/bits/stl_algo.h:2315:54: required from 'void std::__introsort_loop(_RandomAccessIterator, _RandomAccessIterator, _Size) [with_RandomAccessIterator = Task*; _Size = int]' /usr/include/c++/4.8/bits/stl_algo.h:5461:36: required from 'void std::sort(_RAIter, _RAIter) [with _RAIter = Task*]' Main.cpp:15:23: required from here /usr/include/c++/4.8/bits/stl_algo.h:2245:19: error: passing 'const Task' as 'this' argument of 'const bool Task::operator<(const Task&)' discards qualifiers [-fpermissive]while (__pivot < *__last)
The judge compiles with -std=c++11 -O2 -lm.
Does C++ 4.8 not fully support C++11? How do I compile this?
Aucun commentaire:
Enregistrer un commentaire