From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from simark.ca by simark.ca with LMTP id aISZBnokbmSx2hIAWB0awg (envelope-from ) for ; Wed, 24 May 2023 10:51:38 -0400 Received: by simark.ca (Postfix, from userid 112) id 0E54F1E11E; Wed, 24 May 2023 10:51:38 -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=u7HO0EWZ; 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 93B251E0D6 for ; Wed, 24 May 2023 10:51:37 -0400 (EDT) Received: from server2.sourceware.org (localhost [IPv6:::1]) by sourceware.org (Postfix) with ESMTP id 194F93858D28 for ; Wed, 24 May 2023 14:51:37 +0000 (GMT) DKIM-Filter: OpenDKIM Filter v2.11.0 sourceware.org 194F93858D28 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=sourceware.org; s=default; t=1684939897; bh=tZwP7mwuTeBPy+Nm58x8xag5h1J8y3yWDCMCxjzceMQ=; 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=u7HO0EWZMZl5+Ctf8DFcnblDclzeWT2ZHU/SwlsHc6AptIQz6JGQfIaHCZZx2T1ds QqKQnxnM94J25RZoqsALscyyOLe7yF9ikSku3FIMdqEkopXa75GLROhR8ExUmic6bq cVp/OWCLyyzPIk96/E0iS8je+XyLZKlnDA2aUU0c= Received: from CAN01-YT3-obe.outbound.protection.outlook.com (mail-yt3can01on2069.outbound.protection.outlook.com [40.107.115.69]) by sourceware.org (Postfix) with ESMTPS id BA7DE3858D28 for ; Wed, 24 May 2023 14:51:15 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.2 sourceware.org BA7DE3858D28 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=ib9KXKD9JiXhvI4wh7VEhgJm+wp0zIOSVLNvcxf3cJWIuOgVfaPkgWN4CvuaRwn2U/3BEN7M3vM/mwuaC+3dNwt7H3PLpZ6QD4uKlMwjP0psLYg3MsedZ3IvVftPSwHzJA3DVUEI/gGertEuIbk+wNzy7lucJ5OlTxR7uyLBmxFxzJSh8+UWyJz8cee9HEPOBbXjgHs5xOd1QqQDSIn9JbSJeYFkJtvPlBxS/W49S5kUcOBV4SeAwojnAayIsC083cP0NEstqi0itAWljNDo/ZfO3tMDEatdKj12rc8eKrJeBcAe16C07zDwBJeLmKUCLH23cG/I6Tx/ms2QKsDq2g== 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=tZwP7mwuTeBPy+Nm58x8xag5h1J8y3yWDCMCxjzceMQ=; b=iJZpWzTNj8WJhuDYyghLMhwNs7R1ZV3pt54XMsS3FmZK70/P0ePZndrbvKBrv666WBOeYhw+cePYblVsraVzEibPadlV+GfmF1I/XUzDPHImuAKZoWHK0UiZQukszn/TmMmpbzs+RlOlF3xQ4I5+DnQe2b0Om+dePyINGro5TbROf5+5wkRbTPxa/4KmqbFYm7DpqndKxxREFHuhBcrfJZKkTdsZscXcW9wSytLw8OptQXhEh+5nuwRvvQBo+0sTzLSGuBZtDH0YrebWCifVv1LOr5ZdY+HjGwNBYxj8RSB6Vr/n3jWiUJcodaH5R3Z4pmo3cr7btVCtBBo4R6cYWw== 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 YQBPR0101MB8302.CANPRD01.PROD.OUTLOOK.COM (2603:10b6:c01:51::13) 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 14:51:14 +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 14:51:14 +0000 Message-ID: Date: Wed, 24 May 2023 10:51:08 -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 To: Lancelot SIX Cc: gdb-patches@sourceware.org References: <20230518205737.403656-1-simon.marchi@efficios.com> <20230524132157.rhdftbdnjckyzdnt@octopus> Content-Language: fr In-Reply-To: <20230524132157.rhdftbdnjckyzdnt@octopus> Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 7bit X-ClientProxiedBy: YT4PR01CA0186.CANPRD01.PROD.OUTLOOK.COM (2603:10b6:b01:110::25) To YT1PR01MB2828.CANPRD01.PROD.OUTLOOK.COM (2603:10b6:b01:a::23) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: YT1PR01MB2828:EE_|YQBPR0101MB8302:EE_ X-MS-Office365-Filtering-Correlation-Id: c1a4ecfb-4f58-4f7a-8b6f-08db5c665239 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: Lg+YxeftYxCuo862icf3vaW0tbZ1NKRuX/wOC3CGC3DhX3lxBuT9GqX/tg8KrHKj8KqlYMiGWhWC6hL9+NcsDPZIi5FygjkQXlbMDOMW16OXTRbaC3zcVNtUah0Hqd19zMmJqH/JHaxjBE77eA2d8s0jg1ooI2Zsp4MWG20Nh+lqhWFTXSvWBgkX8P63cNAizhRG3hFrlQr1vOFKb8ihq7+nfPvs04UtK4u8D7smd3e/td05q1Zk6tVdPKeyj9RH/r1aSZbG2wT5AmNGGmiaFKlX4auTPdhmm9wvbxkKQH7f+3jf6RPb3PFToxEjb7uINoZSNCgB1D1bRmA2eM1jP+2lP8EvjfcQsBixhU11bO6935WIS5JNwE21FvTKtDo/wcFRxjK2t+jbL1Ox9nfOEdtPPFqQeRvJb0cB09kKb4dyVxaP/UwrMmQ+27mtC1NsFgtfleGg4KT1eZTQK5W5LlbskzzvFu4+s6Z0FsNQThdlgDu1QAsd3v7EM9+mYJrJ0grfjsN4Ax4t6jXr000Dyww4adaNNQPQg7ztc3rrOLwo9uXCN/83eAcuwYfZ608C4QitKko8gcysl39ZW4EJKMNAYm2PhZcSpbOsD4laznEhizMhGTmz8KQkCWZ7z7RITEo7YWvIioawRZQSzMxwQg== 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)(366004)(396003)(39830400003)(346002)(376002)(136003)(451199021)(478600001)(6486002)(31686004)(6666004)(53546011)(26005)(6506007)(6512007)(66476007)(186003)(66946007)(66556008)(6916009)(4326008)(5660300002)(2616005)(36756003)(41300700001)(31696002)(38100700002)(2906002)(8676002)(8936002)(316002)(44832011)(83380400001)(45980500001)(43740500002); DIR:OUT; SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?utf-8?B?N2RJbURUSXBaVXdiTDRUVjhzNUxLdDdwVkR5TkdmcitmR2Z4Z29uV1h0ejgz?= =?utf-8?B?cGJHMHpiKytpUkRNeWJoNHFBUVJ0L2puZTVkdGFSeVdOQ2Jvb1FkMXlCeXBD?= =?utf-8?B?Wm9ibFB2WVdJL3RmSGNVZTlKOG0xTWtLQk8xVEVJbGx2WGh2L0JmVXlOampT?= =?utf-8?B?bHZVTUxGQUNBY1pYZXVjRzJ6MC9GRW5Vd1hnak5vNkErZitRVVcvTFhHNXUx?= =?utf-8?B?UklOWXlaV05ybWhpc2FVRFpUK3AyODhla2dMWnNyS0VXOSsxR0ozZDNpZ0py?= =?utf-8?B?VUxmbm52dmZGVDlsaWpQTGhJdUR5d0RUbm5tOFFHL2VyVmZWRmtFMDV3SEJD?= =?utf-8?B?WlZNMVZKWUdXRzJyWU5LeThOa2FIWEJydUV5b09HRzdJSlJFYmZtZkREN043?= =?utf-8?B?MndrdEI2TEl4bWNDeXE0SVd6bzREUHM1aGU0N252SFBLMHNsOVByODZRRTNI?= =?utf-8?B?T1lxQ1BWN1B5SEVZQWVuSmxtd09tWEU0Z0VaMDNtSitwV01Xem5tTGw1MWIx?= =?utf-8?B?MVNuOW9PY2NEQ1VSc1NSTk5mdjJreVVoMnJqeTg0MmhoSG1nTVFzNGF1MjVV?= =?utf-8?B?Ly9VY0hndFNuR1U0RmxjZmJFY00xWlgwOUpocDRIQThoTW5nT2F2L3VkRFhD?= =?utf-8?B?NUFWY0VEbjlRL3FaZm05VVFtRnJjL2lFVG5SVDF5MnRnOEx5Wks2eXZraVdH?= =?utf-8?B?ZlJYdEJQUEJrZVhha2xwbU14Ykd2UTQwT0lTa1NwV2R4WkZUWlFZZExRaDly?= =?utf-8?B?bGxTNlhmWXVYUlMvVGRaeW1NSzU5S3VFMDdRTEo5YTBsbktQVzJvMnkwOFgy?= =?utf-8?B?N2pWZncvUlRNVkhZNFhLakovTzBoUnlhMVVyLy9aQ25lV1B5a2pGM1dsY25C?= =?utf-8?B?WFpzbVozZmI2dzBuZkl2K204ODliamlMUmZEWWdCaFRtNUJydFNlK2pHeFJs?= =?utf-8?B?aEZ3dXZtR1A0MjhGcE84YUhqRWhFVGZkSnNHdG1aa0p5ZUcyakNuQnFMZ1M5?= =?utf-8?B?Z3QrL0N0VVpCYWZkbFZFUFFzeWt4QTVrM05jSE9WODJ2RXoydDBLRUZjcnlz?= =?utf-8?B?U2lZakk2aXFDdy9WUlc3ZGtvY29hK1JEUitFd29OMHI0K2hZOWtuTFNzVDBt?= =?utf-8?B?eW9Sa2VPT3A1aDhBU3M0OEYybnhqWHJQbzRxVHBsRG54WXl1NEhteGU4Q01B?= =?utf-8?B?VUpwclVveWRXRHNFdElhczFJYmpMQXFza0tjSzZjcmxuZEtUd3JHTEZ2S0Vy?= =?utf-8?B?cHgySHgyS0xpcWZNMUhCZWdsR014YnppSmVBSHl4eUYrbzBBVmx3NS9iQlpp?= =?utf-8?B?aWhaVGYzay9jM2F6SjhoemsxaGE4UEpNY0UwM1BrUmROajNOVXpsVVRjc1JV?= =?utf-8?B?Sm5LQjVva1RxSWpMMisvdFpibmN5YjhJRlJEVXhYR0RDSzkwWmFHVDVnRWxK?= =?utf-8?B?WVZoVVpueHBXbm5UdWRWTStHcEZhR3pUbzJRVzJDeTNWSWlmeGwyZlc2MERB?= =?utf-8?B?blUrTG9oT2ZxRDhIZzQwamNySjdqU3lRV0pqekF2ODlqQWxOYU5SNzZKaTg5?= =?utf-8?B?NlVtcnYwNGhjc1hGQm44cUhzdThISTZicWJSOEJaa2Qwd1p6UktXZFRVRlZa?= =?utf-8?B?L3JiY0grb2I1SktrR2JGRS9naW0rZEVWbkt6eklVd1lRaWNzSGVsa3dBUkxO?= =?utf-8?B?UEZTY0tENDdDM29SeTcyNEF5UjhVcGdQZFNjc2RIMVo1T3NGZ0NHSXY1bnpM?= =?utf-8?B?SlljQlg4NkVqL0RaYm1uMVVIQTFPWWV0ZnorUVkrcWc0N1hYSUVmam91Q2Vj?= =?utf-8?B?WGtCYStZVTd3b1IxWWxoc3ppMElzTG45L1ZaTmF6cEU4TUhhS0tRZlpRVWxN?= =?utf-8?B?bllGZUM5UzdtK1loQ2RLNEdKZW1JZ20vSGNObVh1a2x4YU04b2hGVG5WWVRa?= =?utf-8?B?bTcwOCtOc3Z4WmRmK0c4L203d2dtUjJocE5qYjd1dHRJaTd0Q1JDMzl0Qklh?= =?utf-8?B?VC9tSFFZdnJ3NklYNkRwWkkrUVR6bHZtRExrbXNBN2s3dGZmekVsSFkvL3hJ?= =?utf-8?B?ZjFBMHFUMUdlakFFcVFyZ2xZNk5BU3dEdlp3RXBwYjgxdExIdVJZblAzWXZK?= =?utf-8?Q?HRGr2AohmAF7+Brz0F0MR+fiU?= X-OriginatorOrg: efficios.com X-MS-Exchange-CrossTenant-Network-Message-Id: c1a4ecfb-4f58-4f7a-8b6f-08db5c665239 X-MS-Exchange-CrossTenant-AuthSource: YT1PR01MB2828.CANPRD01.PROD.OUTLOOK.COM X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 24 May 2023 14:51:14.0561 (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: VKMvZmdyIOmBLA+ZOK5fXS2BjF7tCn2ec6lX0gERsGqdXFGkaUrUN5k8mJc5QA/mk8ZWaXkE9zyJCvxDuckoqA== X-MS-Exchange-Transport-CrossTenantHeadersStamped: YQBPR0101MB8302 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 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>> I'll push it with that change. Should I have your RB? Simon