cppcheck: синтаксическая ошибка при использовании/typedef

У меня есть синтаксическая ошибка с объявлениями cppcheck и using/typedef. У меня есть структура, содержащая

struct inferior
{

    using visitor = int;

    template <typename T>
    bool operator()(const T &a, const T &b) const
    {
        return a < b;
    }
};

int main() { 
    return 0; 
}

когда я запускаю cppcheck file.cpp вывод

[file.cpp:5]: (error) syntax error без дальнейшего вывода.

Ошибка исчезла, если я удалю объявление using.

Интересно, это нормальное поведение cppcheck. объявление using не используется напрямую. (Это сокращенный пример с переопределением using int).

Некоторый контекст, если необходимо: в моем приложении using определяет специализацию посетителя OnlyArithmetic следующим образом: using visitor = OnlyArithmetic<inferior> который фильтрует неарифметические типы с использованием методов метапрограммирования, затем я вызываю std::visit для inferior::visitor(). Я использовал этот трюк, чтобы не повторять часть фильтрации для всех необходимых мне структур (низших, высших, ...).

[EDIT] Использование cppcheck 1.88


person cppart    schedule 21.08.2019    source источник
comment
попробуйте добавить --std=c++11 в командную строку, я не знаю, что cppcheck использует по умолчанию   -  person fdan    schedule 21.08.2019
comment
Беглый взгляд на форум cppcheck показывает, что недавно появилась ошибка; есть и другие сообщения о ложных синтаксических ошибках. Если у вас свежая версия, я бы попробовал немного откатиться.   -  person molbdnilo    schedule 21.08.2019
comment
Какая версия cppcheck?   -  person Lightness Races in Orbit    schedule 21.08.2019
comment
Спасибо за ответ. Я пробовал с --std=c++11, но поведение такое же. Я использовал cppcheck 1.88 (последняя доморощенная формула). Я собрал cppcheck из исходников (1.89), но с той же проблемой, но с немного большим объемом вывода. Затем я перешел на версию 1.76.1 (одна из их ветвей), и проблема исчезла.   -  person cppart    schedule 21.08.2019


Ответы (1)


Как предложил molbdnilo. Проблема исчезла с cppcheck версии 1.85.

person cppart    schedule 21.08.2019