From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from simark.ca by simark.ca with LMTP id ibZXKEEKVWp8YAYAWB0awg (envelope-from ) for ; Mon, 13 Jul 2026 11:54:41 -0400 Authentication-Results: simark.ca; dkim=pass (1024-bit key; unprotected) header.d=arm.com header.i=@arm.com header.a=rsa-sha256 header.s=selector1 header.b=DuGRI49/; dkim=pass (1024-bit key) header.d=arm.com header.i=@arm.com header.a=rsa-sha256 header.s=selector1 header.b=DuGRI49/; dkim-atps=neutral Received: by simark.ca (Postfix, from userid 112) id A02681E033; Mon, 13 Jul 2026 11:54:41 -0400 (EDT) X-Spam-Checker-Version: SpamAssassin 4.0.1 (2024-03-25) on simark.ca X-Spam-Level: X-Spam-Status: No, score=-5.4 required=5.0 tests=ARC_SIGNED,ARC_VALID,BAYES_00, DKIM_SIGNED,DKIM_VALID,DKIM_VALID_AU,MAILING_LIST_MULTI, RCVD_IN_DNSWL_MED autolearn=ham autolearn_force=no version=4.0.1 Received: from vm01.sourceware.org (vm01.sourceware.org [38.145.34.32]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange x25519 server-signature ECDSA (prime256v1) server-digest SHA256) (No client certificate requested) by simark.ca (Postfix) with ESMTPS id AD9B81E033 for ; Mon, 13 Jul 2026 11:54:40 -0400 (EDT) Received: from vm01.sourceware.org (localhost [IPv6:::1]) by sourceware.org (Postfix) with ESMTP id 46F8F4BA540B for ; Mon, 13 Jul 2026 15:54:40 +0000 (GMT) DKIM-Filter: OpenDKIM Filter v2.11.0 sourceware.org 46F8F4BA540B Authentication-Results: sourceware.org; dkim=pass (1024-bit key, unprotected) header.d=arm.com header.i=@arm.com header.a=rsa-sha256 header.s=selector1 header.b=DuGRI49/; dkim=pass (1024-bit key) header.d=arm.com header.i=@arm.com header.a=rsa-sha256 header.s=selector1 header.b=DuGRI49/ Received: from AM0PR83CU005.outbound.protection.outlook.com (mail-westeuropeazlp170100001.outbound.protection.outlook.com [IPv6:2a01:111:f403:c201::1]) by sourceware.org (Postfix) with ESMTPS id 678394BA2E14 for ; Mon, 13 Jul 2026 15:53:07 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.2 sourceware.org 678394BA2E14 Authentication-Results: sourceware.org; dmarc=pass (p=none dis=none) header.from=arm.com Authentication-Results: sourceware.org; spf=pass smtp.mailfrom=arm.com ARC-Filter: OpenARC Filter v1.0.0 sourceware.org 678394BA2E14 Authentication-Results: sourceware.org; arc=pass smtp.remote-ip=2a01:111:f403:c201::1 ARC-Seal: i=3; a=rsa-sha256; d=sourceware.org; s=key; t=1783957987; cv=pass; b=CrGmORf11USgCDaEOcs5oIvtCZHgLmkOYm7Cs5Bm6RchwvGx+dRDe3P8IGaPPFYCYG4wNRIiFB4C0bWFySaBxA2Vx3VndgooUy5ERz6JVJBzuXbCJc8tbj2a0bgafm7qoQ4ctYziJLZS3qY/DDrLuri/+TXx3QMfYPgw61uncwQ= ARC-Message-Signature: i=3; a=rsa-sha256; d=sourceware.org; s=key; t=1783957987; c=relaxed/simple; bh=nJk5hEgHLgZj/lOu19MMu8YL+WpfwQjEy7pn6RVqizc=; h=DKIM-Signature:DKIM-Signature:Message-ID:Date:Subject:To:From: MIME-Version; b=GHLicv1gB/ldk4GfJc96lzgng6rwqss99E1IGTIN2ZgCC4deKBjc6sSjKmQrPeairtFZZKhrsN07aye5XaWdTEH1lTc2MObALgioVmbCOwgzFuys/Vchas5g/hNHUpbN2lS9fpyQ+YYP1Z5ulVyxIsYkycTktDZHKkWpcBMxoXQ= ARC-Authentication-Results: i=3; sourceware.org; dkim=pass (1024-bit key, unprotected) header.d=arm.com header.i=@arm.com header.a=rsa-sha256 header.s=selector1 header.b=DuGRI49/; dkim=pass (1024-bit key) header.d=arm.com header.i=@arm.com header.a=rsa-sha256 header.s=selector1 header.b=DuGRI49/ DKIM-Filter: OpenDKIM Filter v2.11.0 sourceware.org 678394BA2E14 ARC-Seal: i=2; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=pass; b=slIE4zMb2iRJY0vlF69043Xvsndkaq/nmKU8IBmKxScc/FXffZqvUAvwf7YgQqeYj10DdWap22WTklNkzYNry/HtcJaniecEzZ3y7Wjgy1XTJq+D+cWqvIN8HBXIqtjkB+KTkNQQk/dz1cIh5ug7PbI0rxG/yrNKP3SRMLR+DtEUVA4+CVOZeYDpQC37gfO61U9CKt7VSfl5OgX3LUF/Q3DhdnjQy6z/LERm10TTxiIEUaknP4YTQnft20wWEu05QY72xtQnQSt4wXhbdCyQgAjL34g1bCceUgakD68KFKUhx87OdT7DuEGCtHXo9K5rJpdFeTt83V3ITw7MC/88yw== ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector10001; 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=FQdAKILtGOM0qLvOsvGt1fdWg1zaMUlLH2yglWHlWxo=; b=hiaO2YZPGlTdl1N1bClX09Er7c30mrCkWeu+SbFkaw2ypAdE4WD0SnRihDZYYoVB0BfMx73Y7BK6/fbeSFs02VV0YLHF9dmKqsjOy1VwNj8Lzu05MOGz1Mbg3TwbDwExyeR78uitPkkXVloRjH2zLPNnteyEMOhkavc9zkxEEdCPBuJINRcUluJ2FKjiAcdEbkUElkiaxWVMrqSTwTinHQsGITdNgSR7Lhk2rqrl3/cjSLYS4Fqk44w/eclfDDCHtBi4P1n5YftTfdb23EfrS9xzh/WrXjqZ1+Ll5mGFn/6x7GUi+3jE+8fPpwSsF1PbNw/6J+Hn3auh4KHsS67VwA== ARC-Authentication-Results: i=2; mx.microsoft.com 1; spf=pass (sender ip is 4.158.2.129) smtp.rcpttodomain=redhat.com smtp.mailfrom=arm.com; dmarc=pass (p=none sp=none pct=100) action=none header.from=arm.com; dkim=pass (signature was verified) header.d=arm.com; arc=pass (0 oda=1 ltdi=1 spf=[1,1,smtp.mailfrom=arm.com] dkim=[1,1,header.d=arm.com] dmarc=[1,1,header.from=arm.com]) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=arm.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=FQdAKILtGOM0qLvOsvGt1fdWg1zaMUlLH2yglWHlWxo=; b=DuGRI49/Tw2mv5VCjRNn9aSIn50lKjUOdC+Y9WU9voXZyBEwMdT2Zc1LaZfDwLKF5jHswsIW0ueDs5UvTPgJmfP06EdBCc1dL72owluvy3tDWFtyN1wKs8YuHJIsJ9AwPhsir5SAQE6LTNXp2kJYY13xyjAOYDKE/gr91LZgCKo= Received: from AM0PR02CA0120.eurprd02.prod.outlook.com (2603:10a6:20b:28c::17) by FRZPR08MB11021.eurprd08.prod.outlook.com (2603:10a6:d10:13e::10) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.21.202.18; Mon, 13 Jul 2026 15:52:54 +0000 Received: from AM3PEPF0000A797.eurprd04.prod.outlook.com (2603:10a6:20b:28c:cafe::a7) by AM0PR02CA0120.outlook.office365.com (2603:10a6:20b:28c::17) with Microsoft SMTP Server (version=TLS1_3, cipher=TLS_AES_256_GCM_SHA384) id 15.21.202.19 via Frontend Transport; Mon, 13 Jul 2026 15:52:54 +0000 X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 4.158.2.129) smtp.mailfrom=arm.com; dkim=pass (signature was verified) header.d=arm.com;dmarc=pass action=none header.from=arm.com; Received-SPF: Pass (protection.outlook.com: domain of arm.com designates 4.158.2.129 as permitted sender) receiver=protection.outlook.com; client-ip=4.158.2.129; helo=outbound-uk1.az.dlp.m.darktrace.com; pr=C Received: from outbound-uk1.az.dlp.m.darktrace.com (4.158.2.129) by AM3PEPF0000A797.mail.protection.outlook.com (10.167.16.102) with Microsoft SMTP Server (version=TLS1_3, cipher=TLS_AES_256_GCM_SHA384) id 15.21.223.9 via Frontend Transport; Mon, 13 Jul 2026 15:52:53 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=C8I0Nbyd1jrvTdH8uZvUWFTg12zMz+nIF8rlbGcpBIf2OQR4G03IPATTrALnyY6pkmY4G0CnknghF316D6WH+BsXW3U43FS55L/1i2VLrWIGZtQp3V6DpyOjY0X2+YBG1ICt6gYFUz5kaBU/hbavBPDpT+5MFN0rpoLOIGx3eIFR15cLS8Q8Wl/4pbGeIcVxtagKRyLeyQSaXrJU1FQj7/lxYOu9OTrdHaJ4rEFBBETau90tw3PSgMxixiL9nE4A3XtyykmA7oo0euZt/1Xqa2Vd3V99mdOF+9NG6gWnrhD3XMAZTG33CE6kbxsJPf7pNR8C2maJLxm1teYLCQ69rg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector10001; 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=FQdAKILtGOM0qLvOsvGt1fdWg1zaMUlLH2yglWHlWxo=; b=jfPuYyPJMUOSz7wewCevXw9nqFD0G9lvdOwX8NWm+sj52qOq8474s+2H+TerOndYjOAeIE1v+W6YNTkp3j6Ikf+/YhXcne013lNlsO8pNgC5Xcx4sou+vK6Ccm1i7SFFtRDI30I2aMWz2p9BozkAgCeMbhXr2IXytpdnTJ9AZmaEKGXq5FEn8n0MZ9JZ4OcwozN4qBCsW8weJyxM/Ji4VEvco51NPy947cWhT3+9EOAcsjMjYO/BSlzim/x0DTTuVYUAByENVE6WlIdAIU90c7AH/WjQNuW/fmTYqpv1oRmHEGhBZlEXxO7TPmW2jLYLM4CQC9iiptO7rIHgrnvhnA== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=arm.com; dmarc=pass action=none header.from=arm.com; dkim=pass header.d=arm.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=arm.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=FQdAKILtGOM0qLvOsvGt1fdWg1zaMUlLH2yglWHlWxo=; b=DuGRI49/Tw2mv5VCjRNn9aSIn50lKjUOdC+Y9WU9voXZyBEwMdT2Zc1LaZfDwLKF5jHswsIW0ueDs5UvTPgJmfP06EdBCc1dL72owluvy3tDWFtyN1wKs8YuHJIsJ9AwPhsir5SAQE6LTNXp2kJYY13xyjAOYDKE/gr91LZgCKo= Authentication-Results-Original: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=arm.com; Received: from DU0PR08MB8664.eurprd08.prod.outlook.com (2603:10a6:10:400::16) by PAWPR08MB10239.eurprd08.prod.outlook.com (2603:10a6:102:367::17) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.21.181.15; Mon, 13 Jul 2026 15:51:49 +0000 Received: from DU0PR08MB8664.eurprd08.prod.outlook.com ([fe80::9438:8617:f487:336f]) by DU0PR08MB8664.eurprd08.prod.outlook.com ([fe80::9438:8617:f487:336f%5]) with mapi id 15.21.0181.016; Mon, 13 Jul 2026 15:51:49 +0000 Message-ID: <77b1efaf-3a30-4663-87f3-ea3814c54474@arm.com> Date: Mon, 13 Jul 2026 16:51:47 +0100 User-Agent: Mozilla Thunderbird Subject: Re: [PATCH v1 04/10] gdb support: add gdb::replace algorithm for iterators and ranges To: Kevin Buettner Cc: gdb-patches@sourceware.org, Luis Machado , Luis Machado , Andrew Burgess , Yury Khrustalev , Pedro Alves , Tom Tromey References: <20260707154900.94542-1-matthieu.longo@arm.com> <20260707154900.94542-5-matthieu.longo@arm.com> <20260710142150.64b2a9aa@f44-mesa-1> Content-Language: en-US From: Matthieu Longo In-Reply-To: <20260710142150.64b2a9aa@f44-mesa-1> Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 7bit X-ClientProxiedBy: LO4P265CA0091.GBRP265.PROD.OUTLOOK.COM (2603:10a6:600:2bc::8) To DU0PR08MB8664.eurprd08.prod.outlook.com (2603:10a6:10:400::16) MIME-Version: 1.0 X-MS-TrafficTypeDiagnostic: DU0PR08MB8664:EE_|PAWPR08MB10239:EE_|AM3PEPF0000A797:EE_|FRZPR08MB11021:EE_ X-MS-Office365-Filtering-Correlation-Id: 06d2a5a8-2d58-4fdd-b779-08dee0f6ccbe x-checkrecipientrouted: true NoDisclaimer: true X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam-Untrusted: BCL:0; ARA:13230040|366016|1800799024|376014|23010399003|22082099003|18002099003|11063799006|4143699003|56012099006; X-Microsoft-Antispam-Message-Info-Original: hL11i760E5DSA+zG1zmiP5odAZn03VwZQz34Tcx21ncKBKi/dyQEqQjdjYAYzpV4Qk84prqgQehRvGBN5JhK90vZsygQFMKSHXdabr/F35akrT/+lF5IQ3UIaxV7S/xg5l49ZATxyT7hjF7tLgVHbD5NTQ8grgYX/xJwLBmXjbN9qan3wZg2RwCzt6nndWsxAiTSgepbLTfG+1ySgcBydgfz4AdQsajaQS6+gJ3gW2/WiNzxyOvjYePytZZikQV3Go8NvLBwEwgMk+pX0aG6Jvr7kuxjNSGP2xMcF81iVfZVjX4NUC/vxoYeYTJq8FHGCJZRhJ0FpB4LcRe6bdouEKgE2C8RGhWTDBKNSr7lVPYmghsa301bCld+BULttKXaTG4anApD8jCgWk1M0v1QfQ3l9POMW7EHjZ4lLlEL130p4iv+l6a/3a5BgiON/teBSUU7XtsQ07khd00SdSXuCrTi/9Eutpv8vwkggWlxaCSmVSO+5oAnV3XYAbbrKYhUCbb18CTzoBP5qeTkehCsFHE1mWCRn88DsrEi1+SoREIkkxhCHCLsMDMai8bg3jRbHZyIyly3mYe3xvBacqqw6xTyjeJAgveAPYXxE4bQvHou8aIJEAeOfHo8lE2F9p7n X-Forefront-Antispam-Report-Untrusted: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:DU0PR08MB8664.eurprd08.prod.outlook.com; PTR:; CAT:NONE; SFS:(13230040)(366016)(1800799024)(376014)(23010399003)(22082099003)(18002099003)(11063799006)(4143699003)(56012099006); DIR:OUT; SFP:1101; X-Exchange-RoutingPolicyChecked: CnnjDeW/R/vNaqAKvqJxHyWC1XcHuh3dIMtS1/nLz80vssyRnA/Nx7CfEOE4zZt3bHWKmV9yjQXZ9ZCPDx45kS/Gb4gd9oc9ZCQiNfocOC4gLe5U1qldpF3F38kAI+Q/bPrxLLWZFzMtSTWMvnx3U6jGGw3tzogOF6MLKDSYceKiv3nH27lST86XUfUSLHsjoxQ5XDS9hBIOZpT+JyaP/7ZtkI9LAh47ey5HpsoODkp3ldPqeGBKZAx/a4s/NrUBAglG0JpGKdrC85BmF8GHTzqa2sUQ5W94j/MaZXPNZ0I8F7sx8rJMMrLnAYfkyJB+CTWrgsiTakrMTAWQX95RuQ== X-MS-Exchange-Transport-CrossTenantHeadersStamped: PAWPR08MB10239 X-EOPAttributedMessage: 0 X-MS-Exchange-Transport-CrossTenantHeadersStripped: AM3PEPF0000A797.eurprd04.prod.outlook.com X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id-Prvs: 1c4ca840-f53a-4c94-8a48-08dee0f6a641 X-Microsoft-Antispam: BCL:0; ARA:13230040|82310400026|35042699022|14060799003|36860700016|23010399003|1800799024|376014|11063799006|56012099006|4143699003|18002099003|22082099003|13003099007; X-Microsoft-Antispam-Message-Info: lPCU1KjUh13WWwJYMrq723AWiDWt/z7GZixC5FJyls5681B8Rny47lYXFceCNpKl2pnAcc7jOJUQbP7jhDOeiJXUgf8mP9Hz8nzPX6cv1I9oF4bd/EKC04FK9wRrfBteuzQGyGkVDnMtCU+MJNysbjeRaNJUa1aLXBTWixYUnPKXRdNKkW6ZhpED2law+WTsFocZhW3AL+Hqhra9tdjfFCFKnRRENTIL0Iy9TOjH3AB+2BBhD0K0V+AWJWOhpQL2epft5+7Ro2K6mXvzkoNUYkhZ83dL9/SiZjV8ElSofUo+jVIK06NY+tAPzlbkyb7oC+fOp5rSf91eoH3RCg/ODuYAdfjkpiKA5sW9SKMnLq5PZz4PEmzSZaPHWvo1vpkN0BREaX26NLhqwthxqCbrqOr8/ThedN24Vz6VbwXSkwaPla13YnBmelwcMYw0zMY92AD1JV01diDBFzTzTOetKShWj2r5a/5zOtFwWYqVtpaNoWvaoW3EH1kCQazEks0pr5dyYKEae3WHutTA7J/6cEhL7ootC+E7guCOSnE/mKQm+7VkG5tIYWkDbSX1vZXJKEQ9ttKp+qJekfJBzmtcVS4F5AT+SXH4Dc5OU2xFzFhs49tBLdwcjfzbgzEacluE4KF5sBzZsde7H8lcwesKog== X-Forefront-Antispam-Report: CIP:4.158.2.129; CTRY:GB; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:outbound-uk1.az.dlp.m.darktrace.com; PTR:InfoDomainNonexistent; CAT:NONE; SFS:(13230040)(82310400026)(35042699022)(14060799003)(36860700016)(23010399003)(1800799024)(376014)(11063799006)(56012099006)(4143699003)(18002099003)(22082099003)(13003099007); DIR:OUT; SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: ln+4/JsSZX3To2Z0wTrh9NDisX2p0jyu1ITmPwhLHi3CsDCBHCiI8qhgY3endtlDmntGoFQYhBhniTCOhWltO1r42cXuY/+4J0v32Ga90EbqVKeYrelTjnXScPgIndB0QrgAbqQf7hbuGjTeI7KOs1t1gRYXckdPL/o4nOjhRarEaxiO77NxXNnu5bOt0DEKTtpdxhRj/PmqZg2+ckxQFHQUdTvfJExtiijHymh+hSaYIQXu6C9WR255N76FCJJcG5N9KTWiI9BlD0l/xxu2RJtCPreXqpszZk4i2gp2K3s5+aFGD5Ldo7HnER2ojDagJ0b48w2e8ods/cRgAmANM0ivEgG2EBeB0YNAZXdcW74UvxepUMMqadFL22bCGO0wLyhw/lH6Tb0fzHqFo1p7EXGw02Fek37/kvGUN8MR4YlPGK9kFL5BF/QXJsleqpsK X-OriginatorOrg: arm.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 13 Jul 2026 15:52:53.3880 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: 06d2a5a8-2d58-4fdd-b779-08dee0f6ccbe X-MS-Exchange-CrossTenant-Id: f34e5979-57d9-4aaa-ad4d-b122a662184d X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=f34e5979-57d9-4aaa-ad4d-b122a662184d; Ip=[4.158.2.129]; Helo=[outbound-uk1.az.dlp.m.darktrace.com] X-MS-Exchange-CrossTenant-AuthSource: AM3PEPF0000A797.eurprd04.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: FRZPR08MB11021 X-BeenThere: gdb-patches@sourceware.org X-Mailman-Version: 2.1.30 Precedence: list List-Id: Gdb-patches mailing list List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: gdb-patches-bounces~public-inbox=simark.ca@sourceware.org On 10/07/2026 22:21, Kevin Buettner wrote: > Hi Matthieu, > > I am not a C++ expert, but I'd like to understand this better... > > On Tue, 7 Jul 2026 16:48:54 +0100 > Matthieu Longo wrote: > >> Add a gdb::replace helper that mirrors the behavior of std::replace >> for iterator pairs, together with a convenience overload accepting a >> range. >> >> This provides a C++17-compatible replacement for the C++20 std::replace/ >> std::ranges::replace algorithms, allowing callers to use a consistent >> interface until GDB transitions to C++20. The helpers should be removed >> once the C++ standard library implementations become available. >> --- >> gdbsupport/array-view.h | 26 ++++++++++++++++++++++++++ >> 1 file changed, 26 insertions(+) >> >> diff --git a/gdbsupport/array-view.h b/gdbsupport/array-view.h >> index 8431d7f5add..61119d7a8e2 100644 >> --- a/gdbsupport/array-view.h >> +++ b/gdbsupport/array-view.h >> @@ -225,6 +225,32 @@ void copy (gdb::array_view src, gdb::array_view dest) >> std::copy_backward (src.begin (), src.end (), dest.end ()); >> } >> >> +/* Replace all occurrences of a value in the provided range. >> + >> + Note: this helper is a reimplementation of std::replace, only available >> + from C++20 onwards, and consequently, should be removed once we switch >> + to C++20. */ >> + >> +template >> +void replace (ForwardIt first, ForwardIt last, >> + const T &old_value, const T &new_value) >> +{ >> + for (auto it = first; it != last; ++it) >> + { >> + if (*it == old_value) >> + *it = new_value; >> + } >> +} > > How does this differ from pre-C++20 std::replace? > > Kevin > I clearly misread the doc => https://en.cppreference.com/cpp/algorithm/replace template< class ForwardIt, class T > void replace( ForwardIt first, ForwardIt last, const T& old_value, const T& new_value ); (1) (until C++26) (constexpr since C++20) It was not added in C++20 but became constexpr since C++20. Since the range version was added in C++20, I must have mixed it up in my head. I removed this duplicate from the patch, and made the range version use std::replace instead. commit 8854b859aec1a3cbcd3edeb571dc1388ac5b81f7 Author: Matthieu Longo Date: Fri Jul 3 16:02:13 2026 +0100 gdb support: add gdb::ranges::replace algorithm Provide a C++17-compatible replacement for the C++20 std::ranges::replace algorithm, allowing callers to use a consistent interface until GDB transitions to C++20. The helper should be removed once the C++ standard library implementation become available. https://en.cppreference.com/cpp/algorithm/ranges/replace diff --git a/gdbsupport/array-view.h b/gdbsupport/array-view.h index 8431d7f5add..f9842ecff30 100644 --- a/gdbsupport/array-view.h +++ b/gdbsupport/array-view.h @@ -225,6 +225,22 @@ void copy (gdb::array_view src, gdb::array_view dest) std::copy_backward (src.begin (), src.end (), dest.end ()); } +namespace ranges { + +/* Replace all occurrences of a value in the provided range. + + Note: this helper is a reimplementation of std::ranges::replace, only + available from C++20 onwards, and consequently, should be replaced by + std::ranges::replace once GDB switches to C++20. */ + +template +void replace (Range r, const T &old_value, const T &new_value) +{ + std::replace (r.begin (), r.end (), old_value, new_value); +} + +} /* namespace ranges */ + /* Compare LHS and RHS for (deep) equality. That is, whether LHS and RHS have the same sizes, and whether each pair of elements of LHS and RHS at the same position compares equal. */ Matthieu.