// { dg-do compile { target c++11 } }
template<typename T> struct add_pointer;
template<typename T> struct add_reference;

template<template<class T> class... Metafunctions>
struct metatuple {
  static const int value = 0;
};

template<>
struct metatuple<add_pointer> {
  static const int value = 1;
};

template<template<class T> class Meta>
struct metatuple<Meta, Meta> { // { dg-message "candidates" }
  static const int value = 2;
};

template<template<class T> class... Metafunctions>
struct metatuple<add_pointer, Metafunctions...> { // { dg-message "" }
  static const int value = 3;
};

template<template<class T> class First,
         template<class T> class... Metafunctions>
struct metatuple<First, Metafunctions...> { // { dg-message "struct" }
  static const int value = 4;
};

template<template<class T> class First,
         template<class T> class Second,
         template<class T> class... Metafunctions>
struct metatuple<First, Second, Metafunctions...> { // { dg-message "struct" }
  static const int value = 5;
};

int a0[metatuple<>::value == 0? 1 : -1];
int a1[metatuple<add_pointer>::value == 1? 1 : -1];
int a2a[metatuple<add_pointer, add_pointer>::value == 2? 1 : -1]; // { dg-error "ambiguous|array bound" "bound" }
int a2b[metatuple<add_reference, add_reference>::value == 2? 1 : -1];
int a3[metatuple<add_pointer, add_reference>::value == 3? 1 : -1]; // { dg-error "ambiguous|array bound" "bound" }
int a4[metatuple<add_reference>::value == 4? 1 : -1];
int a5[metatuple<add_reference, add_pointer>::value == 5? 1 : -1];

// { dg-error "incomplete" "incomplete" { target *-*-* } 40 }
// { dg-error "incomplete" "incomplete" { target *-*-* } 42 }
