------- Comment #2 from dgregor at gcc dot gnu dot org 2007-10-31 12:09 ------- I can duplicate this locally. Here's a smaller test case:
template<typename T> struct uncvref { typedef T type; }; template<typename... Args> struct args { static const int size = sizeof...(Args); }; template<typename G, typename E, typename S, typename V, long GN = G::size, long EN = E::size> struct apply_args; template<typename... G, typename... E, typename S, typename V, long N> struct apply_args<args<G...>, args<E...>, S, V, N, N> { typedef args< typename G::template apply<typename uncvref<E>::type, S, V>::type... > type; }; struct or_ { template<typename E, typename S, typename V> struct apply { typedef typename E::type type; }; }; template<typename T> struct identity { typedef T type; }; apply_args<args<or_>, args<identity<int>>, float, double> a1; I'm working on a fix now. -- dgregor at gcc dot gnu dot org changed: What |Removed |Added ---------------------------------------------------------------------------- AssignedTo|unassigned at gcc dot gnu |dgregor at gcc dot gnu dot |dot org |org Status|UNCONFIRMED |ASSIGNED Ever Confirmed|0 |1 Last reconfirmed|0000-00-00 00:00:00 |2007-10-31 12:09:52 date| | http://gcc.gnu.org/bugzilla/show_bug.cgi?id=33955