// { dg-options "-std=gnu++0x" }
|
// { dg-options "-std=gnu++0x" }
|
template struct add_pointer;
|
template struct add_pointer;
|
template struct add_reference;
|
template struct add_reference;
|
|
|
template class... Metafunctions>
|
template class... Metafunctions>
|
struct metatuple {
|
struct metatuple {
|
static const int value = 0;
|
static const int value = 0;
|
};
|
};
|
|
|
template<>
|
template<>
|
struct metatuple {
|
struct metatuple {
|
static const int value = 1;
|
static const int value = 1;
|
};
|
};
|
|
|
template class Meta>
|
template class Meta>
|
struct metatuple { // { dg-error "candidates" }
|
struct metatuple { // { dg-error "candidates" }
|
static const int value = 2;
|
static const int value = 2;
|
};
|
};
|
|
|
template class... Metafunctions>
|
template class... Metafunctions>
|
struct metatuple { // { dg-error "" }
|
struct metatuple { // { dg-error "" }
|
static const int value = 3;
|
static const int value = 3;
|
};
|
};
|
|
|
template class First,
|
template class First,
|
template class... Metafunctions>
|
template class... Metafunctions>
|
struct metatuple { // { dg-error "struct" }
|
struct metatuple { // { dg-error "struct" }
|
static const int value = 4;
|
static const int value = 4;
|
};
|
};
|
|
|
template class First,
|
template class First,
|
template class Second,
|
template class Second,
|
template class... Metafunctions>
|
template class... Metafunctions>
|
struct metatuple { // { dg-error "struct" }
|
struct metatuple { // { dg-error "struct" }
|
static const int value = 5;
|
static const int value = 5;
|
};
|
};
|
|
|
int a0[metatuple<>::value == 0? 1 : -1];
|
int a0[metatuple<>::value == 0? 1 : -1];
|
int a1[metatuple::value == 1? 1 : -1];
|
int a1[metatuple::value == 1? 1 : -1];
|
int a2a[metatuple::value == 2? 1 : -1]; // { dg-error "ambiguous" }
|
int a2a[metatuple::value == 2? 1 : -1]; // { dg-error "ambiguous" }
|
int a2b[metatuple::value == 2? 1 : -1];
|
int a2b[metatuple::value == 2? 1 : -1];
|
int a3[metatuple::value == 3? 1 : -1]; // { dg-error "ambiguous" }
|
int a3[metatuple::value == 3? 1 : -1]; // { dg-error "ambiguous" }
|
int a4[metatuple::value == 4? 1 : -1];
|
int a4[metatuple::value == 4? 1 : -1];
|
int a5[metatuple::value == 5? 1 : -1];
|
int a5[metatuple::value == 5? 1 : -1];
|
|
|
// { dg-error "incomplete" "" { target *-*-* } 40 }
|
// { dg-error "incomplete" "" { target *-*-* } 40 }
|
// { dg-error "incomplete" "" { target *-*-* } 42 }
|
// { dg-error "incomplete" "" { target *-*-* } 42 }
|
|
|