// RUN: %clang_cc1 -std=c++2a -verify %s template constexpr static bool is_same_v = false; template constexpr static bool is_same_v = true; template concept AtLeast2 = sizeof(T) >= 2; template concept AtMost8 = sizeof(T) <= 8; template struct S { static int foo() requires AtLeast2 && AtMost8 { return 0; } static double foo() requires AtLeast2 { return 0.0; } static char bar() requires AtLeast2 { return 1.0; } static short bar() requires AtLeast2 && AtMost8 { return 0.0; } static int bar() requires AtMost8 && AtLeast2 { return 0.0; } static char baz() requires AtLeast2 { return 1.0; } static short baz() requires AtLeast2 && AtMost8 { return 0.0; } static int baz() requires AtMost8 && AtLeast2 { return 0.0; } static long baz() requires AtMost8 && AtLeast2 && AtLeast2 { return 3.0; } }; void a() { static_assert(is_same_v::foo), int(*)()>); static_assert(is_same_v::bar), long(*)()>); // expected-error@-1{{reference to overloaded function could not be resolved; did you mean to call it?}} static_assert(is_same_v::baz), long(*)()>); }