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...