I’m experimenting with the Boost PP library and found these links useful: C Preprocessor, difference between std::result_of and decltype and name lookup tricks (the latter has a handy trick for declaring return types in a template to workaround name lookup phase issues). The question on StackOverflow that promted me to look at Boost PP was reflection in C++