Семантический анализатор KDevelop сходит с ума от std::variant. Как с этим бороться?

При использовании KDevelop я столкнулся с некоторым кодом, где семантический анализатор сошел с ума: он в основном считает полный заголовок семантически неправильным с уродливой красной подсветкой повсюду.

Я максимально упростил код и вот результат:

введите здесь описание изображения

В случае, если для тестирования MyClass.hpp:

#pragma once

#include <memory>
#include <variant>

template <typename Real, typename Index>
using Io = std::variant<Real, Index>;


template <typename Real, typename Index>
struct MyClass
{
    std::shared_ptr<Io<Real, Index>> ioPtr;
};

Я могу построить этот код (просто добавить основную функцию в другой файл) и, таким образом, считать его допустимым кодом.

Версия KDevelop — текущая версия Debian: 5.3.1 (к сожалению, не последняя версия)

Вопрос:

Почему это происходит? Есть ли что-то, что я могу сделать, чтобы избежать этого? (без изменения кода)


person Adrian Maire    schedule 21.01.2021    source источник


Ответы (1)


В KDevelop вам нужно установить версию языка парсера. Делается это в Project -> Open configuration -> Language support -> C++ Parser. Тогда вы сможете выбрать C++17 в качестве языковой версии анализатора.

person Guillaume Racicot    schedule 03.03.2021