Now example related to preprocessor.
Surprisingly VA parses it well when default Intellisense is enabled, whether or not "get content from Intellise option" is set.
But Intellisense often crashes on my project, so I disabled it renaming FEACP.DLL
Without default Intellisense, VA cannot get fields of "s" structure. When I type "s." then Ctrl+Space, nothing happens.
Of course we cannot name this behaviour "bug", but only real preprocessor can parse constructions like boost/preprocessor's
#include <boost/preprocessor/seq/size.hpp>
#include <boost/preprocessor/seq/elem.hpp>
#include <boost/preprocessor/repeat.hpp>
#include <boost/preprocessor/tuple/elem.hpp>
//================================================================
//
// example macro
//
//================================================================
#define EXAMPLE__TYPE(elem) \ BOOST_PP_TUPLE_ELEM(2, 0, elem)
#define EXAMPLE__NAME(elem) \ BOOST_PP_TUPLE_ELEM(2, 1, elem)
//----------------------------------------------------------------
#define EXAMPLE__FOR_EACH(macro, container) \ BOOST_PP_REPEAT(BOOST_PP_SEQ_SIZE(container), macro, container)
//----------------------------------------------------------------
#define EXAMPLE__CREATE_FIELD_DECL_(elem) \ EXAMPLE__TYPE(elem) EXAMPLE__NAME(elem);
#define EXAMPLE__CREATE_FIELD_DECL(z, n, seq) \ EXAMPLE__CREATE_FIELD_DECL_(BOOST_PP_SEQ_ELEM(n, seq))
//----------------------------------------------------------------
#define EXAMPLE_CREATE(Name, params) \ \ struct Name \ { \ EXAMPLE__FOR_EACH(EXAMPLE__CREATE_FIELD_DECL, params) \ }
EXAMPLE_CREATE
(
My_struct,
((int, A))
((float, B))
);
//================================================================
//
// my_func
//
//================================================================
void my_func(const My_struct& s)
{
}