//===----------------------------------------------------------------------===// // // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. // See https://llvm.org/LICENSE.txt for license information. // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception // //===----------------------------------------------------------------------===// // UNSUPPORTED: c++03, c++11, c++14, c++17 // template // concept same_as; #include #include struct S1 {}; struct S2 { int i; int& f(); double g(int x) const; }; struct S3 { int& r; }; struct S4 { int&& r; }; struct S5 { int* p; }; class C1 {}; class C2 { [[maybe_unused]] int i; }; class C3 { public: int i; }; template class C4 { int t1; int t2; }; template class C5 { [[maybe_unused]] T1 t1; public: T2 t2; }; template class C6 { public: [[maybe_unused]] T1 t1; [[maybe_unused]] T2 t2; }; template struct identity { using type = T; }; template