Index: boost/phoenix/core/actor.hpp =================================================================== --- boost/phoenix/core/actor.hpp (working copy) +++ boost/phoenix/core/actor.hpp (working copy) @@ -85,3 +85,3 @@ - #define BOOST_PHOENIX_ACTOR_ASSIGN_CHILD(Z, N, D) \ + #define BOOST_PHOENIX_ACTOR_ASSIGN_CHILD(N) \ assign( \ @@ -93,3 +93,10 @@ /**/ - #define BOOST_PHOENIX_ACTOR_ASSIGN_CALL(Z, N, D) \ + #define BOOST_PHOENIX_ACTOR_START_ASSIGN_CHILD(Z, N, D) \ + proto::and_< \ + BOOST_PHOENIX_ACTOR_ASSIGN_CHILD(N) \ + /**/ + #define BOOST_PHOENIX_ACTOR_END_ASSIGN(Z, N, D) \ + > \ + /**/ + #define BOOST_PHOENIX_ACTOR_ASSIGN_CALL(N) \ proto::when< \ @@ -98,11 +105,18 @@ > \ - , proto::and_< \ - BOOST_PP_ENUM( \ - N \ - , BOOST_PHOENIX_ACTOR_ASSIGN_CHILD \ - , _ \ - ) \ - > \ + , BOOST_PP_ENUM( \ + N \ + , BOOST_PHOENIX_ACTOR_START_ASSIGN_CHILD \ + , _ \ + ) \ + BOOST_PP_REPEAT( \ + N \ + , BOOST_PHOENIX_ACTOR_END_ASSIGN \ + , _ \ + ) \ > \ /**/ + #define BOOST_PHOENIX_ACTOR_START_ASSIGN_CALL(Z, N, D) \ + proto::or_< \ + BOOST_PHOENIX_ACTOR_ASSIGN_CALL(N) \ + /**/ @@ -127,8 +141,7 @@ struct assign - : proto::or_< - BOOST_PP_ENUM_SHIFTED( - BOOST_PHOENIX_LIMIT - , BOOST_PHOENIX_ACTOR_ASSIGN_CALL - , _ - ) + : BOOST_PP_ENUM_SHIFTED( + BOOST_PHOENIX_LIMIT + , BOOST_PHOENIX_ACTOR_START_ASSIGN_CALL + , _ + ) , proto::when< @@ -137,3 +150,7 @@ > - > + BOOST_PP_REPEAT( + BOOST_PP_DEC(BOOST_PHOENIX_LIMIT) + , BOOST_PHOENIX_ACTOR_END_ASSIGN + , _ + ) {}; @@ -146,3 +163,7 @@ #undef BOOST_PHOENIX_ACTOR_ASSIGN_CALL + #undef BOOST_PHOENIX_ACTOR_START_ASSIGN_CALL + #undef BOOST_PHOENIX_ACTOR_END_ASSIGN_CALL #undef BOOST_PHOENIX_ACTOR_ASSIGN_CHILD + #undef BOOST_PHOENIX_ACTOR_START_ASSIGN_CHILD + #undef BOOST_PHOENIX_ACTOR_END_ASSIGN_CHILD } Index: libs/phoenix/test/Jamfile =================================================================== --- libs/phoenix/test/Jamfile (working copy) +++ libs/phoenix/test/Jamfile (working copy) @@ -128,2 +128,4 @@ [ run regression/bug6040.cpp ] + [ run regression/bug7165.cpp ] ; Index: libs/phoenix/test/regression/bug7165.cpp =================================================================== new file mode 100644 --- libs/phoenix/test/regression/bug7165.cpp (revision 0) +++ libs/phoenix/test/regression/bug7165.cpp (working copy) @@ -0,0 +1,6 @@ +#define BOOST_PHOENIX_LIMIT 20 +#include + +int main() +{ +}