// RUN: %clang_cc1 -std=c++17 -verify %s
// RUN: %clang_cc1 -std=c++17 -verify %s -DNO_CONSTEXPR
// RUN: %clang_cc1 -std=c++20 -verify %s
// Note: this doesn't have a 'moveable' member. Instantiation of the above
// functions will fail if it's attempted.
;
constexpr bool
static_assert;
// expected-error@#f {{never produces a constant expression}}
// expected-note@#call {{}}
A &
;
B && = std::move; // #1 expected-note {{instantiation of}}
B && = &std::move_if_noexcept; // #2 expected-note {{instantiation of}}
B && = &std::forward<B>; // #3 expected-note {{instantiation of}}
const B & = &std::as_const; // #4 expected-note {{instantiation of}}
B * = &std::addressof; // #5 expected-note {{instantiation of}}
B * = &std::__addressof; // #6 expected-note {{instantiation of}}
int = std::move;
;
C && = std::move; // #7 expected-note {{instantiation of}}
C && = std::forward<C>; // #8 expected-note {{instantiation of}}
int = std::move;
// expected-warning@#1 {{non-addressable}}
// expected-warning@#2 {{non-addressable}}
// expected-warning@#3 {{non-addressable}}
// expected-warning@#4 {{non-addressable}}
// expected-warning@#5 {{non-addressable}}
// expected-warning@#6 {{non-addressable}}
// expected-warning@#7 {{non-addressable}}
// expected-warning@#8 {{non-addressable}}
// expected-error@#1 {{non-addressable}}
// expected-error@#2 {{non-addressable}}
// expected-error@#3 {{non-addressable}}
// expected-error@#4 {{non-addressable}}
// expected-error@#5 {{non-addressable}}
// expected-error@#6 {{non-addressable}}
// expected-error@#7 {{non-addressable}}
// expected-error@#8 {{non-addressable}}
void
int bad_signature = ; // expected-error {{unsupported signature for 'std::move<int>'}}