This is the mail archive of the gcc-bugs@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

[Bug c++/52008] [C++0x] ICE when adding partial specialization for variadic-templated structure


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=52008

Michal Malecki <ethouris at gmail dot com> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
             Status|RESOLVED                    |REOPENED
         Resolution|FIXED                       |

--- Comment #5 from Michal Malecki <ethouris at gmail dot com> 2012-04-20 13:33:35 UTC ---
Hey, guys, not too fast.

Why do you say "it's not more specialized"?

The primary template contains "size_t B" as the first template parameter, and
the specialization puts explicit "0" in this place. According to the standard,
this IS a specialization.

Of course, it works now if you change the terminal definition into:

template<typename Type1, typename... Types>
struct tuple_sliced<0, Type1, Types...>
{
    typedef tuple<Type1, Types...> type;
};

But it's roughly the same - the only difference is that it doesn't manage an
interesting case of slicing to 0 (actually I should change it to 1). Whether
the specialization really matches the primary template, it should be decided
when the variadic parameters are expanded, so if this is correct, the cited one
should be correct, too.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]