Чисто ради интереса, существуют ли 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. Из-за ограничений трафика не могу попробовать предложенные варианты, поэтому прошу прикреплять скриншот к ответу.