// RUN:  %clang_cc1 -std=c++2a -verify %s

template<typename T, typename U>
constexpr bool is_same_v = false;

template<typename T>
constexpr bool is_same_v<T, T> = true;

template<typename T, typename U>
concept same_as = is_same_v<T, U>;
// expected-note@-1{{because 'is_same_v<int, _Bool>' evaluated to false}}

template<typename T, typename... Us>
concept either = (is_same_v<T, Us> || ...);

template<typename... Ts>
struct T {
    template<same_as<Ts>... Us>
    // expected-note@-1{{because 'same_as<int, _Bool>' evaluated to false}}
    static void foo(Us... u, int x) { };
    // expected-note@-1{{candidate template ignored: deduced too few arguments}}
    // expected-note@-2{{candidate template ignored: constraints not satisfied}}

    template<typename... Us>
    struct S {
        template<either<Ts, Us...>... Vs>
        static void foo(Vs... v);
    };
};

int main() {
  T<int, bool>::foo(1); // expected-error{{no matching function for call to 'foo'}}
  T<int, bool>::foo(1, 2, 3); // expected-error{{no matching function for call to 'foo'}}
  T<int, bool>::S<char>::foo(1, 'a');
  T<int, bool>::S<char>::foo('a', true);
}
