@asurkis

Возможны ли автоподсказки по такому коду?

Чисто ради интереса, существуют ли IDE, способные давать подсказки по такому коду?
Разумеется, писать код так не стоит, но узнать хочется
#define DECLARE_INT_NODE(current, next) \
    template<> struct int_node<current> \
    { \
        typedef current current_type; \
        typedef next next_type; \
    };
#define DECLARE_MULTIPLE_NODES(prefix) \
    DECLARE_INT_NODE(prefix char, prefix short) \
    DECLARE_INT_NODE(prefix short, prefix int) \
    DECLARE_INT_NODE(prefix int, prefix long) \
    DECLARE_INT_NODE(prefix long, prefix long long) \
    template<> struct int_node<prefix long long> \
    { \
        typedef prefix long long current_type; \
    };
template<class> struct int_node;
DECLARE_MULTIPLE_NODES(signed)
DECLARE_MULTIPLE_NODES(unsigned)
#undef DECLARE_MULTIPLE_NODES
#undef DECLARE_INT_NODE


Qt Creator даёт подсказку, что существует int_node, но парсит только int_node<unsigned long long>, и соответственно всегда показывает только член current_type = unsigned long long
CodeLite + clang не даёт подсказку, что существует int_node, хотя если написать, например, int_node<unsigned short>::, то он показывает, что есть у этого типа члены current_type = unsigned short и next_type = unsigned int
CodeLite + ctags с задачей не справляется вообще никак, то есть не видит ни сам int_node, ни его члены
Хотелось бы узнать, существует ли вообще какая-либо программа кроме компилятора, способная распарсить этот ужасный код, то есть дать подсказку и про то, что существует int_node<class>, и про члены каждого конкретного типа (вроде int_node<unsigned short>)

Из более близких к реальности, хотя уже не ужасных, а вроде как имеющих право на существование примеров:
Qt Creator не может дать подсказки по такому коду:
std::string()., то есть после нажатия точки он "молчит"
CodeLite + ctags и CodeLite + clang с таким кодом справляются без проблем
При этом если в том же Qt Creator написать
std::string s;
s.
то он выдаёт подсказки после нажатия точки

Ответ на этот вопрос не влияет на выбор IDE, а данный вопрос задан чисто ради интереса

P. S. Из-за ограничений трафика не могу попробовать предложенные варианты, поэтому прошу прикреплять скриншот к ответу.
  • Вопрос задан
  • 317 просмотров
Решения вопроса 1
maaGames
@maaGames
Погроммирую программы
MSVC + Whole Tomato. Справляется практически с хоть чем. Чем новее MSVC тем с большим количеством ситуаций лучше справляется автоподсказка и прочие полезности.

16b0fa185f36409fa0ad69bbfe5d3db3.pngb781dc3bbe504c51a6ef6c10a316b554.png
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы