| // RUN: %clang_cc1 -pedantic-errors -std=c++2a -emit-pch %s -o %t |
| // RUN: %clang_cc1 -pedantic-errors -std=c++2a -include-pch %t -verify %s |
| // RUN: %clang_cc1 -pedantic-errors -std=c++2a -include-pch %t -emit-llvm %s -o - |
| |
| |
| #ifndef HEADER |
| #define HEADER |
| |
| #include "Inputs/std-compare.h" |
| constexpr auto foo() { |
| return (42 <=> 101); |
| } |
| |
| inline auto bar(int x) { |
| return (1 <=> x); |
| } |
| |
| struct X { |
| int a; |
| friend constexpr std::strong_ordering operator<=>(const X &x, const X &y) { |
| return x.a <=> y.a; |
| } |
| }; |
| constexpr auto baz(int x) { |
| return X{3} < X{x}; |
| } |
| |
| #else |
| |
| // expected-no-diagnostics |
| |
| static_assert(foo() < 0); |
| |
| auto bar2(int x) { |
| return bar(x); |
| } |
| |
| static_assert(!baz(3)); |
| static_assert(baz(4)); |
| |
| #endif |