From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: by sourceware.org (Postfix, from userid 1888) id 3A0CB3858D37; Thu, 20 Jan 2022 18:12:40 +0000 (GMT) DKIM-Filter: OpenDKIM Filter v2.11.0 sourceware.org 3A0CB3858D37 MIME-Version: 1.0 Content-Transfer-Encoding: 7bit Content-Type: text/plain; charset="utf-8" From: Patrick Palka To: gcc-cvs@gcc.gnu.org Subject: [gcc r12-6777] c++: add testcase for recently fixed PR [PR103631] X-Act-Checkin: gcc X-Git-Author: Patrick Palka X-Git-Refname: refs/heads/master X-Git-Oldrev: 5c12507f5d0bc080e4f346af99824e039236e61c X-Git-Newrev: 2f34d7ef3d026cf7109b6e6bb2eca14c840e7c71 Message-Id: <20220120181240.3A0CB3858D37@sourceware.org> Date: Thu, 20 Jan 2022 18:12:40 +0000 (GMT) X-BeenThere: gcc-cvs@gcc.gnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: Gcc-cvs mailing list List-Unsubscribe: , List-Archive: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 20 Jan 2022 18:12:40 -0000 https://gcc.gnu.org/g:2f34d7ef3d026cf7109b6e6bb2eca14c840e7c71 commit r12-6777-g2f34d7ef3d026cf7109b6e6bb2eca14c840e7c71 Author: Patrick Palka Date: Thu Jan 20 13:12:16 2022 -0500 c++: add testcase for recently fixed PR [PR103631] We accept this testcase after r12-6773. PR c++/103631 gcc/testsuite/ChangeLog: * g++.dg/cpp2a/nontype-class51.C: New test. Diff: --- gcc/testsuite/g++.dg/cpp2a/nontype-class51.C | 26 ++++++++++++++++++++++++++ 1 file changed, 26 insertions(+) diff --git a/gcc/testsuite/g++.dg/cpp2a/nontype-class51.C b/gcc/testsuite/g++.dg/cpp2a/nontype-class51.C new file mode 100644 index 00000000000..1501aa1c426 --- /dev/null +++ b/gcc/testsuite/g++.dg/cpp2a/nontype-class51.C @@ -0,0 +1,26 @@ +// PR c++/103631 +// { dg-do compile { target c++20 } } + +template class T> +constexpr bool is_specialize_value_v = false; + +template class T, auto Ts> +constexpr bool is_specialize_value_v, T> = true; + +template class T> +concept specialize_value = is_specialize_value_v; + +template struct Test { }; + +template +struct A { + template void f(T) requires specialize_value; +}; + +int main() { + A{}> a0; + A{}> a1; + a0.f(a0); + a0.f(a1); + a0.f(0); // { dg-error "no match" } +}