Mercurial > hg > CbC > CbC_llvm
view clang/test/PCH/cxx2a-defaulted-comparison.cpp @ 222:81f6424ef0e3 llvm-original
LLVM original branch
author | Shinji KONO <kono@ie.u-ryukyu.ac.jp> |
---|---|
date | Sun, 18 Jul 2021 22:10:01 +0900 |
parents | 79ff65ed7e25 |
children |
line wrap: on
line source
// RUN: %clang_cc1 -std=c++2a -verify -Wno-defaulted-function-deleted -include %s %s // // RUN: %clang_cc1 -std=c++2a -emit-pch %s -o %t.pch // RUN: %clang_cc1 -std=c++2a -include-pch %t.pch %s -verify // // RUN: %clang_cc1 -std=c++2a -emit-pch -fpch-instantiate-templates %s -o %t.pch // RUN: %clang_cc1 -std=c++2a -include-pch %t.pch %s -verify // expected-no-diagnostics #ifndef INCLUDED #define INCLUDED namespace std { struct strong_ordering { int n; constexpr operator int() const { return n; } static const strong_ordering equal, greater, less; }; constexpr strong_ordering strong_ordering::equal = {0}; constexpr strong_ordering strong_ordering::greater = {1}; constexpr strong_ordering strong_ordering::less = {-1}; } // Ensure that we can round-trip DefaultedFunctionInfo through an AST file. namespace LookupContext { struct A {}; namespace N { template <typename T> auto f() { bool operator==(const T &, const T &); bool operator<(const T &, const T &); struct B { T a; std::strong_ordering operator<=>(const B &) const = default; }; return B(); } } } #else namespace LookupContext { namespace M { bool operator<=>(const A &, const A &) = delete; bool operator==(const A &, const A &) = delete; bool operator<(const A &, const A &) = delete; bool cmp = N::f<A>() < N::f<A>(); } } #endif