| // PR c++/32565 |
| // { dg-do compile } |
| // { dg-options "-std=c++0x" } |
| |
| template<typename...> struct A1; |
| template<template<int...> class T> struct A1<T<0> > {}; |
| template<typename...> struct A2; |
| template<template<int...> class T> struct A2<T<0, 1> > {}; |
| template<typename...> struct A3; |
| template<template<int, int...> class T> struct A3<T<0, 1> > {}; |
| template<typename...> struct A4; |
| template<template<typename...> class T> struct A4<T<int> > {}; |
| template<typename...> struct A5; |
| template<template<typename...> class T> struct A5<T<int, long> > {}; |
| template<typename...> struct A6; |
| template<template<typename, typename...> class T> struct A6<T<int, long> > {}; |
| template<int> struct B1 {}; |
| template<int, int> struct B2 {}; |
| template<typename> struct B3 {}; |
| template<typename, typename> struct B4 {}; |
| A1<B1<0> > a1; // { dg-error "incomplete type" } |
| A2<B2<0, 1> > a2; // { dg-error "incomplete type" } |
| A3<B2<0, 1> > a3; // { dg-error "incomplete type" } |
| A4<B3<int> > a4; // { dg-error "incomplete type" } |
| A5<B4<int, long> > a5; // { dg-error "incomplete type" } |
| A6<B4<int, long> > a6; // { dg-error "incomplete type" } |