On Tue, Sep 5, 2017 at 8:44 PM, Jeff Epler <jep...@unpythonic.net> wrote:
> On Tue, Sep 05, 2017 at 01:55:58PM +0200, Alex Mestiashvili wrote: > > GHash.hh:91:44: error: type/value mismatch at argument 1 in template > > parameter list for 'template<class _Tp> struct std::hash' > > while (pos<fCapacity && hash[pos].hash<0) pos++; > > Nothing in this line is intended to be a template parameter list, but it > looks like gcc has decided something is; maybe it's "hash", which the > compiler treats as std::hash due to e.g., an earlier "using" statement. > > If so, consider trying > while (pos<fCapacity && (hash[pos].hash)<0) pos++; > ^ parenthesize ^ > so that the "<" can't introduce a template parameter list. > > My mental model of the C++ grammar doesn't explain to me why the > compiler thinks this "<" can introduce a template parameter list, but > that sure seems to be what the compiler states it is doing. Usually > when g++ and I disagree about C++ grammar, g++ is right... > > Jeff > Great! this solved the problem. Thank you very much! Alex