[{"id":3678899,"web_url":"http://patchwork.ozlabs.org/comment/3678899/","msgid":"<46885778-8129-450e-839d-2918ab45a075@redhat.com>","list_archive_url":null,"date":"2026-04-17T21:57:10","subject":"Re: [PATCH] c++/reflection: dependent type considered consteval-only\n [PR124855]","submitter":{"id":4337,"url":"http://patchwork.ozlabs.org/api/people/4337/","name":"Jason Merrill","email":"jason@redhat.com"},"content":"On 4/17/26 5:14 PM, Marek Polacek wrote:\n> Bootstrapped/regtested on x86_64-pc-linux-gnu, ok for trunk?\n> \n> -- >8 --\n> Here we emit the \"function of consteval-only type must be declared\n> 'consteval'\" error for f, even though its type will become\n> char f(int) after substitution, which is not consteval-only.  We\n> probably shouldn't consider dependent type consteval-only.\n> \n> \tPR c++/124855\n> \n> gcc/cp/ChangeLog:\n> \n> \t* reflect.cc (consteval_only_p): Return false if the type is\n> \tdependent.\n> \n> gcc/testsuite/ChangeLog:\n> \n> \t* g++.dg/reflect/type11.C: New test.\n> ---\n>   gcc/cp/reflect.cc                     |  4 ++++\n>   gcc/testsuite/g++.dg/reflect/type11.C | 10 ++++++++++\n>   2 files changed, 14 insertions(+)\n>   create mode 100644 gcc/testsuite/g++.dg/reflect/type11.C\n> \n> diff --git a/gcc/cp/reflect.cc b/gcc/cp/reflect.cc\n> index 97b6e76c652..167123b3f2d 100644\n> --- a/gcc/cp/reflect.cc\n> +++ b/gcc/cp/reflect.cc\n> @@ -8630,6 +8630,10 @@ consteval_only_p (tree t)\n>        which could be consteval-only, depending on T.  */\n>     t = complete_type (t);\n>   \n> +  /* For dependent types we can't be sure if this type is consteval-only.  */\n> +  if (dependent_type_p (t))\n> +    return false;\n\nI'd check this before complete_type.  OK with that change.\n\n>     /* Classes with std::meta::info members are also consteval-only.  */\n>     hash_set<tree> visited;\n>     return !!cp_walk_tree (&t, consteval_only_type_r, &visited, &visited);\n> diff --git a/gcc/testsuite/g++.dg/reflect/type11.C b/gcc/testsuite/g++.dg/reflect/type11.C\n> new file mode 100644\n> index 00000000000..11024ff4606\n> --- /dev/null\n> +++ b/gcc/testsuite/g++.dg/reflect/type11.C\n> @@ -0,0 +1,10 @@\n> +// PR c++/124855\n> +// { dg-do compile { target c++26 } }\n> +// { dg-additional-options \"-freflection\" }\n> +\n> +using mi = decltype(^^::);\n> +\n> +template<class T>\n> +auto f(T) -> [: ^^T == ^^int ? ^^char : mi{} :];\n> +\n> +static_assert(sizeof(f(0)) == 1);\n> \n> base-commit: dd723b26663c76440ae44e83f0c699240c75b81e","headers":{"Return-Path":"<gcc-patches-bounces~incoming=patchwork.ozlabs.org@gcc.gnu.org>","X-Original-To":["incoming@patchwork.ozlabs.org","gcc-patches@gcc.gnu.org"],"Delivered-To":["patchwork-incoming@legolas.ozlabs.org","gcc-patches@gcc.gnu.org"],"Authentication-Results":["legolas.ozlabs.org;\n\tdkim=pass (1024-bit key;\n unprotected) header.d=redhat.com header.i=@redhat.com header.a=rsa-sha256\n header.s=mimecast20190719 header.b=cjW/AL1c;\n\tdkim-atps=neutral","legolas.ozlabs.org;\n spf=pass (sender SPF authorized) smtp.mailfrom=gcc.gnu.org\n (client-ip=38.145.34.32; helo=vm01.sourceware.org;\n envelope-from=gcc-patches-bounces~incoming=patchwork.ozlabs.org@gcc.gnu.org;\n receiver=patchwork.ozlabs.org)","sourceware.org;\n\tdkim=pass (1024-bit key,\n unprotected) header.d=redhat.com header.i=@redhat.com header.a=rsa-sha256\n header.s=mimecast20190719 header.b=cjW/AL1c","sourceware.org; dmarc=pass (p=quarantine dis=none)\n header.from=redhat.com","sourceware.org; spf=pass smtp.mailfrom=redhat.com","server2.sourceware.org;\n arc=none smtp.remote-ip=170.10.129.124"],"Received":["from vm01.sourceware.org (vm01.sourceware.org [38.145.34.32])\n\t(using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)\n\t key-exchange x25519 server-signature ECDSA (secp384r1) server-digest SHA384)\n\t(No client certificate requested)\n\tby legolas.ozlabs.org (Postfix) with ESMTPS id 4fy7zG3rZ3z1y1V\n\tfor <incoming@patchwork.ozlabs.org>; Sat, 18 Apr 2026 07:57:45 +1000 (AEST)","from vm01.sourceware.org (localhost [127.0.0.1])\n\tby sourceware.org (Postfix) with ESMTP id 2AFCD4D108DB\n\tfor <incoming@patchwork.ozlabs.org>; Fri, 17 Apr 2026 21:57:43 +0000 (GMT)","from us-smtp-delivery-124.mimecast.com\n (us-smtp-delivery-124.mimecast.com [170.10.129.124])\n by sourceware.org (Postfix) with ESMTP id 4C59C4CCCA22\n for <gcc-patches@gcc.gnu.org>; Fri, 17 Apr 2026 21:57:16 +0000 (GMT)","from mail-qt1-f200.google.com (mail-qt1-f200.google.com\n [209.85.160.200]) by relay.mimecast.com with ESMTP with STARTTLS\n (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id\n us-mta-563-o7EGyni4O0Sk1C-AkcDsgw-1; Fri, 17 Apr 2026 17:57:14 -0400","by mail-qt1-f200.google.com with SMTP id\n d75a77b69052e-50b4076dc16so19265331cf.2\n for <gcc-patches@gcc.gnu.org>; Fri, 17 Apr 2026 14:57:14 -0700 (PDT)","from [192.168.50.130]\n (130-44-146-247.s12789.c3-0.arl-cbr1.sbo-arl.ma.cable.rcncustomer.com.\n [130.44.146.247]) by smtp.gmail.com with ESMTPSA id\n d75a77b69052e-50e392c7994sm22330431cf.4.2026.04.17.14.57.11\n (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);\n Fri, 17 Apr 2026 14:57:11 -0700 (PDT)"],"DKIM-Filter":["OpenDKIM Filter v2.11.0 sourceware.org 2AFCD4D108DB","OpenDKIM Filter v2.11.0 sourceware.org 4C59C4CCCA22"],"DMARC-Filter":"OpenDMARC Filter v1.4.2 sourceware.org 4C59C4CCCA22","ARC-Filter":"OpenARC Filter v1.0.0 sourceware.org 4C59C4CCCA22","ARC-Seal":"i=1; a=rsa-sha256; d=sourceware.org; s=key; t=1776463036; cv=none;\n b=NJXaJ9Skf2qrb/6LeZWTvmhdl4aEmkQ6YfkmWL9hG3PZSKZfG6Pkram6TESTdPfMrVXcGIvqBjgMYrEtFj8jofuVcLZ7stQFObTGDQpPHGNil3TWS7LmNi/PnJtYZKnPfi0WPh1GrO1USnrS3aKnN8Ul2f93KC0Nl18HYa1GvG0=","ARC-Message-Signature":"i=1; a=rsa-sha256; d=sourceware.org; s=key;\n t=1776463036; c=relaxed/simple;\n bh=KPypXUiOr/+t+3xXPzOAQW7z4fKxFJOh4sR1lyHVWvw=;\n h=DKIM-Signature:Message-ID:Date:MIME-Version:Subject:To:From;\n b=Z8eprLQEefi0ZTaJ9fwdSZUjtynMFlov3tbnOW34qDLI/ns5N4tNg0gJJ67wMKdxioqQxMgoS1l9g7njWJ1WohuewygZvbbEiYtXEpABzPxvZpfuMYb0lXzGXD+Bshnrzqg4GLsK62iyNqeHdtrYrL0p5398zlueTv5hM80PtgI=","ARC-Authentication-Results":"i=1; server2.sourceware.org","DKIM-Signature":"v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com;\n s=mimecast20190719; t=1776463036;\n h=from:from:reply-to:subject:subject:date:date:message-id:message-id:\n to:to:cc:mime-version:mime-version:content-type:content-type:\n content-transfer-encoding:content-transfer-encoding:\n in-reply-to:in-reply-to:references:references;\n bh=EBGfCZTSEb2hNinGvB55I2JRsug8AdcqmHy5KBgbztM=;\n b=cjW/AL1cJkTCFRsgDaBBBF4BPpkcZYrkgsicpdxjEPvlbFkHBHuffT5tuB+xezE1B6Cq7T\n iiju8zluSD26ctDIBa7xdNGBrxYET4nYbm+NiOkqjyrVJgTaovaOjSUF7A4otFsk5pZF0U\n pZm6ifKB4bIhTKGc2MD9tLsxO2Y/qkk=","X-MC-Unique":"o7EGyni4O0Sk1C-AkcDsgw-1","X-Mimecast-MFC-AGG-ID":"o7EGyni4O0Sk1C-AkcDsgw_1776463034","X-Google-DKIM-Signature":"v=1; a=rsa-sha256; c=relaxed/relaxed;\n d=1e100.net; s=20251104; t=1776463034; x=1777067834;\n h=content-transfer-encoding:in-reply-to:from:content-language\n :references:to:subject:user-agent:mime-version:date:message-id\n :x-gm-gg:x-gm-message-state:from:to:cc:subject:date:message-id\n :reply-to;\n bh=EBGfCZTSEb2hNinGvB55I2JRsug8AdcqmHy5KBgbztM=;\n b=ctK3N3dHUZXkC6GN+l1rwDjsnCuoHM/MzI/RuMdhPZbVjXCL5M9/xZ7qilRslQ6pYz\n Jb//J07bEbe6j/NXkffeUJp4S4L9yW0ipGiD3bxu6xmweX6F7ru+JshRiJSm3fgfuXEu\n EFhK3lydfrOOtnLmGRELv6MipIPpdZ2DMBACSIC7e7TjGwei6WXtq0xJfWc7XZ4FzHY5\n gvAvuTY71laGNFeeWpdnOwDA11Fr3fCtyHfhg8t90xYA7QPNUxGPzfEv87W914mwR3m/\n KYd7A3kULWIP9C6SsPlBPTQG2RFsQU5u4/A7PDr9oicTjf0NgMgi+nXV6fVmmiFMgCiB\n 45UQ==","X-Forwarded-Encrypted":"i=1;\n AFNElJ/P3BRgqbknHB3bHF+L4iWpw/jwtyNvfUqutYWhrdxPhgmspc5ew0BnzqNAaZTZ3ueIuA30KeTFzpG4Fg==@gcc.gnu.org","X-Gm-Message-State":"AOJu0YwnqD0Kp57UdDC5mOw4vfj5AfMvflrpLdA1lGjr0R4JfwPl/M2u\n UtCbtsLJmMuyZcqOWMuDuVB6t1xg+2vPsO5D+0v2yH2f+gaJwk8RIdtOognCmQ6010FOokfIYEW\n I3Zf5B3lcHjXBbnM6I10x5YIUdqqyExgYBjlIg0GgI8VXhcOVBtevwvcRMjg=","X-Gm-Gg":"AeBDiesU1bNawPrv1jDxT+viUOyVhjgX1I06miueI/+10EHDAMZRUMqi6VHbw5GY8Ko\n w1843L+8bByxmCQyDqIhnKl/UPQZ8rr5rtCyn1ZpeauXCzeKwVI9O0gffASCoIoTIo4bAi6J4Of\n JJ+wJBpIhR26OqUekNoUnNE6Bl6DEp6yXOXqm3uoEeXSRJSx/f15H7xXx4tOTBX3LfczV+gwugw\n IomuYf28tUpztgk2DVDf/mEbDiBNXEeCbUnAHvdLEXPd5jgMkCyMHM5zdmsQFbYLVr1RIFdwOJK\n 0z8AQZpYHsHmzNiv7rzi7EN7BBs7nqNZzW6gWZo3lEik7sBwN1CgIFxryC97qb0s6Y021XqUCWl\n X92FC8scOhaHCjeuoGfJWuGKc2ufc7zs2e839NeAPsLpw0ckkOOQa/9Jz1N8Wb5D9iLYHa6PxCw\n Awi9Em9Eq1jL044WmoPFDnl6kzleAqBfAMWfp2U11j6A==","X-Received":["by 2002:ac8:5952:0:b0:509:1a36:6aca with SMTP id\n d75a77b69052e-50e36b3c5aemr69570061cf.17.1776463033942;\n Fri, 17 Apr 2026 14:57:13 -0700 (PDT)","by 2002:ac8:5952:0:b0:509:1a36:6aca with SMTP id\n d75a77b69052e-50e36b3c5aemr69569641cf.17.1776463033448;\n Fri, 17 Apr 2026 14:57:13 -0700 (PDT)"],"Message-ID":"<46885778-8129-450e-839d-2918ab45a075@redhat.com>","Date":"Fri, 17 Apr 2026 17:57:10 -0400","MIME-Version":"1.0","User-Agent":"Mozilla Thunderbird","Subject":"Re: [PATCH] c++/reflection: dependent type considered consteval-only\n [PR124855]","To":"Marek Polacek <polacek@redhat.com>, GCC Patches\n <gcc-patches@gcc.gnu.org>, Jakub Jelinek <jakub@redhat.com>","References":"<20260417211459.445911-1-polacek@redhat.com>","From":"Jason Merrill <jason@redhat.com>","In-Reply-To":"<20260417211459.445911-1-polacek@redhat.com>","X-Mimecast-Spam-Score":"0","X-Mimecast-MFC-PROC-ID":"y7NDne1RegYbuA6HzODKFLS1va3SfrcCdfFWX2WQut4_1776463034","X-Mimecast-Originator":"redhat.com","Content-Language":"en-US","Content-Type":"text/plain; charset=UTF-8; format=flowed","Content-Transfer-Encoding":"7bit","X-BeenThere":"gcc-patches@gcc.gnu.org","X-Mailman-Version":"2.1.30","Precedence":"list","List-Id":"Gcc-patches mailing list <gcc-patches.gcc.gnu.org>","List-Unsubscribe":"<https://gcc.gnu.org/mailman/options/gcc-patches>,\n <mailto:gcc-patches-request@gcc.gnu.org?subject=unsubscribe>","List-Archive":"<https://gcc.gnu.org/pipermail/gcc-patches/>","List-Post":"<mailto:gcc-patches@gcc.gnu.org>","List-Help":"<mailto:gcc-patches-request@gcc.gnu.org?subject=help>","List-Subscribe":"<https://gcc.gnu.org/mailman/listinfo/gcc-patches>,\n <mailto:gcc-patches-request@gcc.gnu.org?subject=subscribe>","Errors-To":"gcc-patches-bounces~incoming=patchwork.ozlabs.org@gcc.gnu.org"}}]