------- Comment #10 from cppljevans at suddenlink dot net 2009-08-13 19:15 ------- Created an attachment (id=18356) --> (http://gcc.gnu.org/bugzilla/attachment.cgi?id=18356&action=view) minimal test case demonstrating bug
The comments at bottom show that wrong template instance is being selected by cp_tree_equal. For example, with: //#define INTEGRAL0_C cp_tree_equal tries to select the integral_c<,Values> from struct package_c for integral1_c<,Value_1>::type_1; however, since Value_1 is not a parameter pack, compiler gives confusing error message about Values not being expanded, OTOH, with: #define INTEGRAL0_C the compiler tries to use the type of integral0_c<,Value_0>::type_0 for the integral<,Values> in the supertype of package_c; however, since, in this case, Value_0 is not a parameter pack, compiler gives error about no contained argument packs. -- http://gcc.gnu.org/bugzilla/show_bug.cgi?id=40092