template template specialisation bug

Richard Crossley [Digitimer] rdc@rdcdesign.com
Mon Dec 9 09:39:00 GMT 2002


<version>
Reading specs from ./../lib/gcc-lib/mingw32/3.2/specs
Configured with: ../gcc/configure --with-gcc --with-gnu-ld --with-gnu-as
--host=mingw32 --target=mingw32 --prefix=/mingw
 --enable-threads --disable-nls --enable-languages=f77,c++,objc,ada
--disable-win32-registry --disable-shared
Thread model: win32
gcc version 3.2 (mingw special 20020817-1)
</version>

<code>
template <typename T>
struct F1;
template <template <typename> class F,typename A0>
struct F1<F<A0> >{}; // [line 72]
template <template <typename,typename> class F,typename A0,typename A1>
struct F1<F<A0,A1> >{}; // [line 74]

template <typename A0,typename A1>
struct t1{};
template <typename A0 = int,typename A1 = int> // note default
parameters
struct t2{};

int main()
{
    F1<t1<int,int> > X1; 
    F1<t2<int,int> > X2; // fails here [line 84]
    return 0;
}
</code>

<diagnostic>
main.cpp: In function `int main()':
main.cpp:84: ambiguous class template instantiation for `struct
F1<t2<int, int> >'
main.cpp:74: candidates are: struct F1<F<A0, A1> >
main.cpp:72:                 struct F1<F<A0> >
main.cpp:84: aggregate `F1<t2<int, int> > X2' has incomplete type and
cannot be defined
</diagnostic>


Regards,

Richard Crossley
mailto:rdc@rdcdesign.com



More information about the Gcc-bugs mailing list