From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from simark.ca by simark.ca with LMTP id zrgBGQoxbmSN5RIAWB0awg (envelope-from ) for ; Wed, 24 May 2023 11:45:14 -0400 Received: by simark.ca (Postfix, from userid 112) id 55F841E11E; Wed, 24 May 2023 11:45:14 -0400 (EDT) Authentication-Results: simark.ca; dkim=pass (1024-bit key; secure) header.d=sourceware.org header.i=@sourceware.org header.a=rsa-sha256 header.s=default header.b=YUEwRyR9; dkim-atps=neutral X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on simark.ca X-Spam-Level: X-Spam-Status: No, score=-5.3 required=5.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU,MAILING_LIST_MULTI,NICE_REPLY_A, RCVD_IN_DNSWL_MED,RDNS_DYNAMIC,URIBL_BLOCKED autolearn=ham autolearn_force=no version=3.4.6 Received: from sourceware.org (ip-8-43-85-97.sourceware.org [8.43.85.97]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (2048 bits) server-digest SHA256) (No client certificate requested) by simark.ca (Postfix) with ESMTPS id DD4581E0D4 for ; Wed, 24 May 2023 11:45:13 -0400 (EDT) Received: from server2.sourceware.org (localhost [IPv6:::1]) by sourceware.org (Postfix) with ESMTP id 66E01388210D for ; Wed, 24 May 2023 15:45:13 +0000 (GMT) DKIM-Filter: OpenDKIM Filter v2.11.0 sourceware.org 66E01388210D DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=sourceware.org; s=default; t=1684943113; bh=jkpVbU5EZcHJiu1nsiD0H/0Hc34qdkIP7otqnLLnLjI=; h=Date:Subject:To:Cc:References:In-Reply-To:List-Id: List-Unsubscribe:List-Archive:List-Post:List-Help:List-Subscribe: From:Reply-To:From; b=YUEwRyR9iwPvQG4WOJ2ZJ79Kn8piZq1hFg+SI071A+lK2D5DyWiNqshsb31iomhkD gvVYZot+j47fRA8yQj2y4eUagI65pfL9BNYinKtRlwnS6pBPBbf+42kWL88NsgYYHc Rq5UlyYY5Gj8uuoa3NpZFluIAdPfLqP7cul8J2IA= Received: from CAN01-YQB-obe.outbound.protection.outlook.com (mail-yqbcan01on2084.outbound.protection.outlook.com [40.107.116.84]) by sourceware.org (Postfix) with ESMTPS id 2EDB03857346 for ; Wed, 24 May 2023 15:44:31 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.2 sourceware.org 2EDB03857346 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=mOlnxzcA9YrA+YyoA7N3JQ9xI+/DDNaH+2hzMj/1812CNUZtTuZ54kUiSR/bxZurboUX7BNi0DZfCJ3ExceUCGE61TMWMh2BWqsdkWH7Z5G36ssGB4iCr7wU1KQTJFvuQ/YfI4KgWASRhmb6IgrQ3ZRqcRpKwTSnUzK1p60UkYSj/atyaCTMVpLvhiQYqipueTPN7AJsAcNcQOIx4lIBp8kktzgmoSzfexaJmauQI69rBxW9G9aFfoUCuU1enCukKMaTawowcaYx6diWI8/TLW849SYMAP7kB38ScdbtDa+xaC954x4nhZPbiu7Vr8alehpS5BxkZXNIGCiuOjziwA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=jkpVbU5EZcHJiu1nsiD0H/0Hc34qdkIP7otqnLLnLjI=; b=b3ksdN2rImYbcj8IU3E4vEWMoW1Cr2ERJTJZdi4/sgqPFHkR8GNDBVFxMD373Rxco05qhnNkItENslMumGFg5Yi6og5b03y9PPZ0NTewlFPnJvdXzUMUSLceIH6hhguLhB3KXrqE03Y9yGentf1s2TkFusBQ7US0/f8fewbEYhtYQakCKoj5wEpEX23sDQGWxUnqDmw06yK1BB3W4g1uQWA1vnyc2t1A/kvfpbEHZslxdemIxUvu5WYze9gA/mWfMRbaXLE8PplPquV0pILdaOoqZJyChyY9/5GxqBkUqZz0p+WUZZnwVQWJeRqORCy7oiOg2+BRy02mpPyVQs4fXw== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=efficios.com; dmarc=pass action=none header.from=efficios.com; dkim=pass header.d=efficios.com; arc=none Received: from YT1PR01MB2828.CANPRD01.PROD.OUTLOOK.COM (2603:10b6:b01:a::23) by YT4PR01MB10552.CANPRD01.PROD.OUTLOOK.COM (2603:10b6:b01:105::6) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6433.15; Wed, 24 May 2023 15:44:29 +0000 Received: from YT1PR01MB2828.CANPRD01.PROD.OUTLOOK.COM ([fe80::28e9:8b26:5c7a:46a8]) by YT1PR01MB2828.CANPRD01.PROD.OUTLOOK.COM ([fe80::28e9:8b26:5c7a:46a8%3]) with mapi id 15.20.6433.015; Wed, 24 May 2023 15:44:29 +0000 Message-ID: Date: Wed, 24 May 2023 11:44:28 -0400 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:102.0) Gecko/20100101 Thunderbird/102.11.0 Subject: Re: [PATCH] gdbsupport: add support for references to checked_static_cast Content-Language: fr To: Lancelot SIX Cc: gdb-patches@sourceware.org References: <20230518205737.403656-1-simon.marchi@efficios.com> <20230524132157.rhdftbdnjckyzdnt@octopus> <20230524153342.4imwul3zrmvcku6o@octopus> In-Reply-To: <20230524153342.4imwul3zrmvcku6o@octopus> Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 7bit X-ClientProxiedBy: YT4PR01CA0073.CANPRD01.PROD.OUTLOOK.COM (2603:10b6:b01:ff::24) To YT1PR01MB2828.CANPRD01.PROD.OUTLOOK.COM (2603:10b6:b01:a::23) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: YT1PR01MB2828:EE_|YT4PR01MB10552:EE_ X-MS-Office365-Filtering-Correlation-Id: 8e24338e-c175-4822-8c62-08db5c6dc2b7 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: x8dbZkjw8fgQcHLsJ61fayRQKFTEyL/6EaQ18zEn4CIeEvVEis8kvpLrKTVFFJ+CZbs25hSGedk8+T+1Z4xAmLthIlqrq9Ov/DXDOsJKP7ZFx2tBQlnwadnjwPUtv6404p35DLUMvynh8aURzwyqjz5ZSxm2FuZovJ0B5mK26r+x8B6h66OMb/IxTZY5GZ68rEVi8RX++Ae0bRfaYK1emvAN/odvbrCDA/ViaSRAjf/+EdjnRScT1hAOEZyRuNTI42HaGJSIN7vRXPuugAPXbPrdi/3wFUBjanGez1gC2Ocwd2X3ki9Ee0CBLmHiBqL942Rr5zLmuBDVtMeCcbn2qS7M+RDsEmfwv8FZUegy1qLPjZ8iEP7dx8yY7GYzLrffZE/7HSAdFJ0/x/h0qEBuSjohYC2+2UxJzGJcUbqz3ijKpGvRvV2B5aJVR8F8wpgM8tpJw9qEHUBPKbIrGF5hLvxivrYJ3+hRBNtLw6pUQNnc42EO8J0dJBuRdHffG2v3gaRPu2B19wDiOaV9QG9yMQOdJ851bR0uNgxBtU2+c++oGTVId/Zlr3e4M3vg9amNozDAy50RIXVsSPf3xk+BxeT83Jree0tW0KVrG2CuZT5mwHZMB1bbymCfZy1Ldk4+NDdyFrGL1kUqM3SHFjk8aA== X-Forefront-Antispam-Report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:YT1PR01MB2828.CANPRD01.PROD.OUTLOOK.COM; PTR:; CAT:NONE; SFS:(13230028)(376002)(366004)(136003)(346002)(39830400003)(396003)(451199021)(83380400001)(6916009)(4326008)(38100700002)(66476007)(66946007)(2906002)(41300700001)(44832011)(8936002)(8676002)(31696002)(316002)(5660300002)(36756003)(66556008)(2616005)(26005)(6486002)(31686004)(186003)(6512007)(6506007)(53546011)(478600001)(43740500002)(45980500001); DIR:OUT; SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?utf-8?B?Q2NxT2p3VW9VdE5IM2VURTQ3SHk5ODFJb1pQVEY3MWs0OVVSMW9IcS9LR3lZ?= =?utf-8?B?UCtVcG5KUGwzS2RmVFMxWFdYMmc1VGxsZ3EvNHBqSmZuc2tmcG82dHNlM1pB?= =?utf-8?B?M1ppVCt2VU85T3o2UTlCSW5oOFoxUFNWeHFwNEIycXhuVVhRdFh3cTBiU3BT?= =?utf-8?B?cjFITTlISllObEV0UHV2bUhUVVRoMHhXUTVpZzhEQnNVbS8vOE4yNXNZN1VW?= =?utf-8?B?WXQ2MmhpcnUzZURtUzJtdUh1RXlVMUNTdGdaQVlKd1lXMzJsRVFRWXZDYlU4?= =?utf-8?B?blk2U25uakorZmRmZis0NU44WkZmNjhEN2R1dmQ1QzRINStVUWtscVorMzRB?= =?utf-8?B?dmVKekVFaXFVWitBQldjR09GUFphbVFqdVZTUXprN3h6MFRvMGFLOFd1TGV5?= =?utf-8?B?MGg2bHVOK1hGQTE3Wlp5WFVMQjdPVmJmNXpLZERrSEhFSkpUS1dna0VTczkz?= =?utf-8?B?UVlnd3prL3hPb3NsWDhKbjh2eEliYklEckI5OHJlWVFGbDkzbDFCVCtaMXBy?= =?utf-8?B?dWxRZGpEUk8rcXY0S1ZjNlZaUGNBcHdncFBONVVIdFlUam9aazh6T1QwNUFT?= =?utf-8?B?di9KWmN4SWtTVlZSNjV6Q2tnUEhKZnVPUzhGbWt1c0RzeEV0RE9NMzk5amZV?= =?utf-8?B?Q0Q3MUJocmpVNU5Pa04zMHlEeHRySGxiTmx3RGJVYndmS2h6cTc5dXpLOHBj?= =?utf-8?B?UlFicTBwbk9SdUdhRXUrdlNBNXU2VHp4dno5cStIc3NVclRLU1l1VWpnZ0Nu?= =?utf-8?B?Uis3dmpXQkJ2SjRndlZLZHppZW1VT1MxYnNsRkVySWk4YzNFc3F1T3pKR2g1?= =?utf-8?B?aHVvaHU5N0MwdHdMcjU5NC9xbGRxK3hYNkJIYm5aN1BjSXhGWDhqUFMvN1Mv?= =?utf-8?B?T2trcDRxNUtzcXk3OFhyOEUvc3M1MmZaOHkyM0VZdHlLYmdZNXg0Ti90dzI0?= =?utf-8?B?MVhqMG9wVGNrcHdsdFB3aGwvS1ZnMnpPMFZvMTV6SFpqWGp2VWRQbWVUTDE4?= =?utf-8?B?a1hZSkVVemZ4OHhrZ1RoZmVCbXJUYkZBVWtRV0xUS1FLbzErQW50YmR2SVpa?= =?utf-8?B?dk1rQ0ZQeG83RndPeTFTVTBOMDRsR1Z3OWFhUGI2WTRGU2xTcHoxVElSNnln?= =?utf-8?B?SS93QlRWWkl3M21Uak1FMVA5WlJhSUhyZ0pLc1JLMENBeHlrOWNpajhlWlM4?= =?utf-8?B?K2dSYzJHWHhGTXdTYU1TQUduYjJIZ1lxMG5TYWs5WENWMEVDeklSOXQ5N2Iz?= =?utf-8?B?Z2prMCs2Vm4vZmVHb0hMWjN4bjREMjBTTHR3cjlCNHBNZnYrWHVWMjV6R1FK?= =?utf-8?B?djBDb0s3QXh4V0NJWEdrYWxvWGZlU04rc0hJdG5jVDY4NWZadnB4NWFOZWdq?= =?utf-8?B?MnlBNGlLUDhZQ09yVDQwVGNyWXVSNzA0bE5RaXF0N2g0UjNsWE9qMkR5akRo?= =?utf-8?B?ZkptbjkzazQ3Wk9oZkRSZUNqYkRLZEtkNjdKbXZkZExKOWwwbUd6NkozbFJq?= =?utf-8?B?M0duQ2pUbEN2UVVQalI4ODVoaGRoQ0xqQWhXK01sdElmdUNPOHk2ZjU5WUJW?= =?utf-8?B?eS9mK29XQTNDbmtIcWN3ZkllVnZ6WDRYMWtKUmk0c09FZzB4Z0YrS1NldjFx?= =?utf-8?B?YlJWK2xDNlB1bEIzQnp6OTNDSUx4SWhuenU3YnFIY0RNMjdLOVRqZnhGZlZL?= =?utf-8?B?U092LzhTN0hHb3BMaHpDemZEOTdiaGNsV0x6ZUxsQ2orS24wd3d5MzBtQ0M0?= =?utf-8?B?VFhWYjdORU9GbnVDLy82d0o1NE41c1dVWlZndTRrR2ZrVVFXVkZUU0xNMktu?= =?utf-8?B?T2MvU0laMEZCWS9JNStiK3RicHBoLzliVUJJd24zWjlENk5EUkVEUUpJMFRY?= =?utf-8?B?SkFlWVcxVXZ1MGRvaE9ZMjZGNzBiRHg5c01BSXNFNXZrQS93ZmhtaFhhbXMw?= =?utf-8?B?QXBxMzU1NzVkRnRWSVdFMFA2U1lCcDFBV2dnRTNkd25QRnhXWi9oRWcyZlRF?= =?utf-8?B?ZE4vMHozMTNwNFJOY3B0U0kzZ3NoUjdWdzFSSkdIUlFPMzdQQ0NSS1ZtSHRU?= =?utf-8?B?QkVqRXNqSnJDeDNHa3pyM3FvNE83bDFZWTdQbXZHVDZkRzdQLzc3M25XVjFp?= =?utf-8?Q?Zs5QzzBt1xaGBDcdmudrec/1C?= X-OriginatorOrg: efficios.com X-MS-Exchange-CrossTenant-Network-Message-Id: 8e24338e-c175-4822-8c62-08db5c6dc2b7 X-MS-Exchange-CrossTenant-AuthSource: YT1PR01MB2828.CANPRD01.PROD.OUTLOOK.COM X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 24 May 2023 15:44:29.2049 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 4f278736-4ab6-415c-957e-1f55336bd31e X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: PHrlYB1f6yfi1l3L5OKbnJB2bOJROyRE9Xw3VcOgN80cQ2MhdRsUO2uBPmRlo7W9Sk4iu+GliNvxg1mI6UPPoQ== X-MS-Exchange-Transport-CrossTenantHeadersStamped: YT4PR01MB10552 X-BeenThere: gdb-patches@sourceware.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: Gdb-patches mailing list List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , From: Simon Marchi via Gdb-patches Reply-To: Simon Marchi Errors-To: gdb-patches-bounces+public-inbox=simark.ca@sourceware.org Sender: "Gdb-patches" On 5/24/23 11:33, Lancelot SIX wrote: > On Wed, May 24, 2023 at 10:51:08AM -0400, Simon Marchi via Gdb-patches wrote: >> On 5/24/23 09:22, Lancelot SIX wrote: >>> Hi Simon, >>> >>>> diff --git a/gdbsupport/gdb-checked-static-cast.h b/gdbsupport/gdb-checked-static-cast.h >>>> index bc75244bddd0..7e5a69a6474d 100644 >>>> --- a/gdbsupport/gdb-checked-static-cast.h >>>> +++ b/gdbsupport/gdb-checked-static-cast.h >>>> @@ -66,6 +66,22 @@ checked_static_cast (V *v) >>>> return result; >>>> } >>>> >>>> +/* Same as the above, but to cast from a reference type to another. */ >>>> + >>>> +template >>>> +T >>>> +checked_static_cast (V &v) >>>> +{ >>>> + static_assert (std::is_reference::value, "target must be a reference type"); >>> >>> Have you considered incorporating this constraint inside >>> checked_static_cast's signature? It could look like something like >>> this: >>> >>> template >>> typename std::enable_if::value, T>::type >>> checked_static_cast (V &v) >>> { >>> ... >>> } >> >> I like static_assert because it's easier to write and read, and I find >> that the error messages it produces are easier to understand. They >> point you directly to the static_assert line that says "target must be a >> reference", so you know instantly what is wrong. With template >> parameters, you have to decrypt the template substitution message, it's >> really not obvious. However... >> >>> If T is not a reference, then this template won't be instantiated at all >>> instead of instantiating it and having an error. This could allow other >>> templates / functions to be considered if they matched instead of just >>> producing an error. >> >> ... it seems like there are some pragmatic advantages of using the >> template parameter method, it's probably the right C++ idiom to use, >> even if I don't like it much. We have the gdb::Requires util, which >> makes it at least more straightforward to read the code: >> >> template>> >> > > C++20 would make this more readable: > > template > requires std::is_reference_v > T > checked_static_cast (V &v) { ... } > > but this is currently not available to us. Ah nice, it will be easy to convert gdb::Requires to that. > With the use of gdb::Requires, the static_assert becomes redundant, but > It does not hurt to keep it. If you find it easier to capture the > intent of the code when reading, I do not mind keeping it. I would remove it, no point in having both (I think the static_assert would never trigger anyway). > Feel free to use my RB > Reviewed-By: Lancelot Six Thanks, I'll add it. Just waiting for the final feedback from Andrew. Simon