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



--- Comment #4 from Shane <w.shane.grant at gmail dot com> 2013-03-29 00:21:32 
UTC ---

(In reply to comment #1)

> We badly need a reduced testcase not using the whole <tuple> (not to mention

> <iostream> of course)



Here's a more reduced test case.



template <class ... Args>

struct mytype {};



template <class T, class ... Args>

void something( mytype<T, Args...> )

{ }



int main()

{

  // Compiles OK in GCC 4.6.3 but NOT 4.8

  something<int, char, bool>( mytype<int, char, bool>() );



  // Compiles OK in GCC 4.8 but NOT 4.6.3

  something<int, bool, char>( mytype<int, char, bool>() );



  return 0;

}



I tried to make simpler cases using purely variadic templates (e.g. no class

T), but the issue only shows up when there is an individually named template

parameter as well as a variadic pack.  To get the error to show up it also

requires types that cannot be implicitly converted to each other.

Reply via email to