У меня проблема с компиляцией этого минимального примера с g ++ 7.3
template<typename T>
struct conflict
{
};
template<typename T>
struct s
{
int conflict;
};
template<typename T>
bool go()
{
s<T>* sp;
return sp->conflict < 0;
}
Фактическое сообщение об ошибке меньше, чем показ:
|| test.cpp: In function ‘bool go()’:
test.cpp|16 col 24| error: type/value mismatch at argument 1 in template parameter list for ‘template<class T> struct conflict’
|| return sp->conflict < 0;
|| ^
test.cpp|16 col 24| note: expected a type, got ‘0’
На самом деле компилятор пытается создать экземпляршаблон conflict
вместо сравнения поля conflict
.
Есть ли у этой ошибки имя?
Кроме того, я исправил это, поменяв сравнение для использования >
.Есть ли лучший способ?