
Hello, I am not sure if this is the most appropriate place to post this, but I do know the author frequents this mailing list often. Well, when I run this code: #define FIXED(s, n, text) text #define TTP(s, n, id) \ template< \ CHAOS_PP_AUTO_ENUM( \ CHAOS_PP_INC(n), FIXED, class \ ) \ > class id ## n \ /**/ CHAOS_PP_AUTO_ENUM(3, TTP, T) // template<class> class T0, // template<class, class> class T1, // template<class, class, class> class T2 It expands to: template< CHAOS_IP_AUTO_ENUM_1( 1, FIXED, class ) > class T0 , template< CHAOS_IP_AUTO_ENUM_1( 2, FIXED, class ) > class T1 , template< CHAOS_IP_AUTO_ENUM_1( 3, FIXED, class ) > class T2 Showing CHAOS_IP_AUTO_ENUM_1 is incorrect, and its why it won't expand since its trying to be expanded recursively. It should be CHAOS_IP_AUTO_ENUM_2 instead. I'm not sure why it incorrectly deduces the recursion state. TTP is not a deferred expression. Any ideas? Thanks, Paul Fultz II