From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from simark.ca by simark.ca with LMTP id gtxgBejOsWjNZg8AWB0awg (envelope-from ) for ; Fri, 29 Aug 2025 12:01:44 -0400 Authentication-Results: simark.ca; dkim=pass (2048-bit key; unprotected) header.d=efficios.com header.i=@efficios.com header.a=rsa-sha256 header.s=selector1 header.b=eiadcvKh; dkim-atps=neutral Received: by simark.ca (Postfix, from userid 112) id E7AD21E043; Fri, 29 Aug 2025 12:01:43 -0400 (EDT) X-Spam-Checker-Version: SpamAssassin 4.0.1 (2024-03-25) on simark.ca X-Spam-Level: X-Spam-Status: No, score=-0.8 required=5.0 tests=ARC_SIGNED,ARC_VALID,BAYES_00, DKIM_SIGNED,DKIM_VALID,DKIM_VALID_AU,MAILING_LIST_MULTI, RCVD_IN_DNSWL_LOW,RCVD_IN_VALIDITY_CERTIFIED_BLOCKED, RCVD_IN_VALIDITY_RPBL_BLOCKED,RCVD_IN_VALIDITY_SAFE_BLOCKED autolearn=no autolearn_force=no version=4.0.1 Received: from server2.sourceware.org (server2.sourceware.org [8.43.85.97]) (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 548121E043 for ; Fri, 29 Aug 2025 12:01:43 -0400 (EDT) Received: from server2.sourceware.org (localhost [IPv6:::1]) by sourceware.org (Postfix) with ESMTP id 6A48C3858C36 for ; Fri, 29 Aug 2025 16:01:42 +0000 (GMT) DKIM-Filter: OpenDKIM Filter v2.11.0 sourceware.org 6A48C3858C36 Authentication-Results: sourceware.org; dkim=pass (2048-bit key, unprotected) header.d=efficios.com header.i=@efficios.com header.a=rsa-sha256 header.s=selector1 header.b=eiadcvKh Received: from CAN01-YT3-obe.outbound.protection.outlook.com (mail-yt3can01on2138.outbound.protection.outlook.com [40.107.115.138]) by sourceware.org (Postfix) with ESMTPS id 608C13858C74 for ; Fri, 29 Aug 2025 16:01:04 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.2 sourceware.org 608C13858C74 Authentication-Results: sourceware.org; dmarc=pass (p=none dis=none) header.from=efficios.com Authentication-Results: sourceware.org; spf=pass smtp.mailfrom=efficios.com ARC-Filter: OpenARC Filter v1.0.0 sourceware.org 608C13858C74 Authentication-Results: server2.sourceware.org; arc=pass smtp.remote-ip=40.107.115.138 ARC-Seal: i=2; a=rsa-sha256; d=sourceware.org; s=key; t=1756483264; cv=pass; b=i7TJFAy/Dzr9k3SXqfoiYNheQIHwpgUDssy6gkJ75F+aADh2NgwxZxQbZPAmKVQ+huqIJTM5LMkkt2I0uSWDsbqzaCePgXO2deJuwoK0ZWsAmjprRgpp94JjSJgQ5nBpR3gvGRhbfPcB1HZRhg13xSnPdyrSAozRKpNI5KGZxSM= ARC-Message-Signature: i=2; a=rsa-sha256; d=sourceware.org; s=key; t=1756483264; c=relaxed/simple; bh=6AEbx3ClnlddFIPxuOhpT0dc5m6SJHjlteVfmOzqUGY=; h=DKIM-Signature:Message-ID:Date:Subject:To:From:MIME-Version; b=oeR0VjqIm6xwCdhdm0vVbGA75VLQLQySQm9iBuKNaTK5h7DLN/oN/DaR86grrFVnoLJf2n12GYcohUtrIYXnLOeB36lpJ5Ht8FkxcDBZblUBFle+nfstTAVh22gP0Y8u69P2u3pWojI+HSU7nTOIDAgX8RWv4MgBV2CzETx/3fI= ARC-Authentication-Results: i=2; server2.sourceware.org DKIM-Filter: OpenDKIM Filter v2.11.0 sourceware.org 608C13858C74 ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=zLFayP3D6T0UtBmap+/iUdRMbDXj031EbhKrIKGGxPXFO+MqYJBAJ8oLt1eQjz+LX18ILdSaF9sv0iULw/hjgBZEbauijS3L+/d5gKmgD5FayluRmutDScRMtLRtblATvcS1MjlMPJ/dSjY0wTrxmbHlwSzopaNFa0RM8wtr7wBMdoifs2Ji17+rjl62I3WOok5iHf+vdHhMogdEgm7gMeMx05IHLlGiySnHgy6KcDtZFzeFmF2a34sz5Q/LvV+XTu1BNzZM+Rd4MwGVMUZcxwILvVSoMd6LynpYHQJhCb1zo21DKI6GeFr+rAL1EbZ2l+tVHehR8CvAxojhZcimRA== 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=jYDW1V3Mohn4y4tnsmiY8EdGy2bLE7UXTIlIjJYTV5Y=; b=nA0amVLqrBe4Y+SS71GR6dIas4yDDbvgIJzQdvjBLTgXa7j/5qz93bvwHpZKcNku9S0a5ZgnekgmIZnIUCvOXqoLk58svzIT+SVpMo1W7UReY4G6rsvnQVB+GLGbqgTF5wPqsh80EQkVAKxHH/EzHz3wo91N5Swb5twrbG7IBXjJk6hV2rteQaGqojiXFFwFqmMCUNefmKNZIQjR7ZllC3eyF8pTVw72tkrli5XHJM9mwOqI8PTQhS/opF5GyUmEbCJ2gOozsAxtAkkA4BMgAqVOV/j4lfY6eyrp6tltxIM820zONSR7wWXnJuze6lSmEY9xHGH/4b0bPFYGQbycKQ== 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 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=efficios.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=jYDW1V3Mohn4y4tnsmiY8EdGy2bLE7UXTIlIjJYTV5Y=; b=eiadcvKhSAILesx3WYusINvb32YpG16ldGinM8u9W/KMNXDGIeWBeTC6OfNiD0WUy+LBFJud/UiTa2v9XGjpTQsRst3BangzekGghFMhBXM5uOckByx54KPK0zgxtz7KRN33bh0rMzc8yPLzaRqQ6sX2ggTAQ26w5RCC/U7M4S10uXCfw5k2rZGeJETE8mR2Ckxz+YsHwDE4ULxQDfGYv9qN/F4k17M7krAKKI4Opuk8+PNbjlHTDtC492P3QhOoSouIYUBeBTry6gGVOa45f7gReLIf3xfoQL+i8Y7nAN07C7FsLIbYJ9RX7IsQDjo6aRcU8Wyew2ijk+W4Ns6dZw== Authentication-Results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=efficios.com; Received: from YQXPR01MB5418.CANPRD01.PROD.OUTLOOK.COM (2603:10b6:c01:2c::6) by YT3PR01MB9009.CANPRD01.PROD.OUTLOOK.COM (2603:10b6:b01:7e::10) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9073.21; Fri, 29 Aug 2025 16:00:57 +0000 Received: from YQXPR01MB5418.CANPRD01.PROD.OUTLOOK.COM ([fe80::1e89:d520:630a:7d86]) by YQXPR01MB5418.CANPRD01.PROD.OUTLOOK.COM ([fe80::1e89:d520:630a:7d86%2]) with mapi id 15.20.9073.021; Fri, 29 Aug 2025 16:00:57 +0000 Message-ID: Date: Fri, 29 Aug 2025 12:00:56 -0400 User-Agent: Mozilla Thunderbird Subject: Re: [PATCH 2/3] gdbsupport: make filtered_iterator work with pointers To: Tom Tromey Cc: gdb-patches@sourceware.org References: <20250828151100.84594-1-simon.marchi@efficios.com> <20250828151100.84594-2-simon.marchi@efficios.com> <875xe6utyx.fsf@tromey.com> Content-Language: en-US From: Simon Marchi In-Reply-To: <875xe6utyx.fsf@tromey.com> Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 7bit X-ClientProxiedBy: YQZPR01CA0137.CANPRD01.PROD.OUTLOOK.COM (2603:10b6:c01:87::17) To YQXPR01MB5418.CANPRD01.PROD.OUTLOOK.COM (2603:10b6:c01:2c::6) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: YQXPR01MB5418:EE_|YT3PR01MB9009:EE_ X-MS-Office365-Filtering-Correlation-Id: 405b067e-34cd-4cf5-56c8-08dde7153da4 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|366016|1800799024|376014; X-Microsoft-Antispam-Message-Info: =?utf-8?B?bVRPekFFclZsYTh3c3FRWloxNVJSYUJ2WlFuMTJuNUp3K20wbzVYR2RZSzhr?= =?utf-8?B?Y3FjNWJRMGFHaTV3WWgwMnBCZEFGWXJ1TzBVelFVUHYydGU1NzNSK3AzR1lr?= =?utf-8?B?dXJUUE11c1A1cG1HaXhrOEk0OHpJMWV0KzJja0V6YWVUbVZGc3VXOVgyZ2dI?= =?utf-8?B?WVVOU3dNSXMxRzJGUHVsSmY2QjV4S09WL2dlYlJVcTlMd1JmNFJoV2R4VVdM?= =?utf-8?B?TnN5RWhUdmNNZ3JYOFRwTXhVQkNOeHZWVmdlS1hlcURRb2g2UFRjYjBXS0Zj?= =?utf-8?B?NFVCbmt6QzdPQUVRZWtzMjVNTEgvcFN1SCtTdjczZHZnU2xSektzaEw3SjA4?= =?utf-8?B?YW4vQmwxUHBqQzhsa0oxTXJmbGVpWWhpNXBFczNKQzJCbTVUSkF5UnQ3OTNR?= =?utf-8?B?NHFmd01RM0t0T0hRV1NoemszQ3FnZnFHYnRqZ3lEKzlIRmpsbW9TdUhFU0M2?= =?utf-8?B?L1RyKzFadDdSU08wUk9wVHBWdkZ3M0ZxRmVQbDk1anFQdDdrajNxS0pnME1D?= =?utf-8?B?YVhleWVoYlNEUjJGeUIzUFNmaE9nTTlRak94eVNXeDR5ZmFBRXRvTGJaSERv?= =?utf-8?B?aVdKYWhEQlIxVjY1ams4c1lSN0VVaXFUVTJHa0d3Yy90MEZRYnBwa2haYi94?= =?utf-8?B?RGwraHVkdFBmanZ5QklMdWpXem13NkZSMC82UjFvVUdBNHRwYzVCRHcwcjc4?= =?utf-8?B?MWJaMmVvY2k5UUZTdUk5c3RoWGhtem5UVms0ZFFWS2ZONStqSWZQWWQwQUJ3?= =?utf-8?B?Um8rVFdqUGJmOExiOWNUdXlLU24zekp6UXRGdE84NjE1T2MxUi9JZ2lNdFFG?= =?utf-8?B?R1JvV2o0MVF4d2R0OFVOSnJWenFSZ2J6VkJocVVKNGt1cGVxOTNuK1U1YlFw?= =?utf-8?B?SDQxeFFGNlBDSzBtVUE4L3NvWDhLSkIxc2J0WnpHOFB1SFlrOU5TYUFqTFBH?= =?utf-8?B?SWZEbkFmTGtqTUZ1aDJJWGVSaDVQdE1yenJwWXVyTlVnQ0Q5aWY1bTJ0R1l2?= =?utf-8?B?cjY4VUhLSURMbmk4eTlxVWwvN1Nuc0tzWHByRlpjNUtNazF3V0FKNmlUK3Bu?= =?utf-8?B?cHlNOUg5d3doZTVCWHRMT0ZIY1NsWDFJZlhJS3JTZFpLek5uMVByaW5CSTNV?= =?utf-8?B?L0RmdThucTlsUUphM0Fta0M4cUdrVFppbHdlSGdSd1hDQm1La0kyNkYyNzFn?= =?utf-8?B?UHVvby9Ic05FdDFUeWlLZG9ZU1p6N2V2aUxNQmNGT1oxOGZyMlBFQ0hxcTc0?= =?utf-8?B?QTFQTE1yNFZCNnd5ODluMENhVnpLUUlqQ2Jzd0pRSFJxK2FrTDRlOXdETTN6?= =?utf-8?B?MGhiZW5yUXliN3hMUVdvRlVDNW8xMTJIVTZOamlHSnJsVTlNUVEzN2RDeWdF?= =?utf-8?B?d2JPRU1Tc0FCcDBaanl6OU9ZT0tCTDRHaGs4enJueElYbmlLYUVYWjJWWWpU?= =?utf-8?B?VWhTUjFCZmowaFNEYm5ZeDZvRE5haVFFc3l0c3RsVUJDTVBVb0JLdWppb1Zj?= =?utf-8?B?cE9pRStsVTVzSkhSQnpLVUp0Mm5Dd214OVFrMmM3MVhNYkdsdHNkMEptcUZJ?= =?utf-8?B?S3lzQ0VYOU82cWU5czNuZzdyTEttYU9vWlVQYnU4dHNSRUlKNXp0cUNHVUpL?= =?utf-8?B?SDZSclV0azQrRlk5RWpPZlc5dXRsZlNTbHBaM2ZRRjIvZnhNbWdGOEdIdUln?= =?utf-8?B?V0ZxOHVtTi9WQVdUNjdBNnhzRXIvWDZ0c3V1Wkh1VjMyQzBTR2ZrYUlqcGh0?= =?utf-8?B?MnFhSDJmVkQwY0l2anpRRXVvNTVmTHl5bUsvY081U2YzYmpPR1dDa2FJNmlF?= =?utf-8?B?Q21MWE5VNXhvRUE0bnVicWR6ZitWK0dBY3RoZjBPeGpiTHJ3cUFxRUs3TUdQ?= =?utf-8?B?ZkZ5MFB5TE9HOWQwemc0RVVETUg5V0lScjM4UVJqSnU1bzdoRU4xYmIyV0Vs?= =?utf-8?Q?WTrMmzfsRKE=3D?= X-Forefront-Antispam-Report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:YQXPR01MB5418.CANPRD01.PROD.OUTLOOK.COM; PTR:; CAT:NONE; SFS:(13230040)(366016)(1800799024)(376014); DIR:OUT; SFP:1102; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?utf-8?B?RXNDSTdTSDh2VzB1eGd5RndRclRaUWNwbzF3TzBYd2F2L29mN3ZicGlndUdq?= =?utf-8?B?d3ZHWGljRElsUDdocEMyN0RORTNDMy9VZWhlbGx5SjhVVUE3c1VvRFgxVElt?= =?utf-8?B?eE1nQnB0MTlTSitpMGRUSng4WkF6Q2Q1bFlMVTQyWGNWbEVNZE1KbU9xM0g3?= =?utf-8?B?STJDNXhiL0pTNTFQM2I0TXoyTktHNGZ2WFJ6aGdaSG95d2tFUmVJSWhTek5P?= =?utf-8?B?WHJMeUlEeGtJdGgrdndTSXZMN3FyWDExR000N0MreThMNUllREJjN1ZoZGI5?= =?utf-8?B?eW5VdXkrUnRzckRBUURlUzFyNFFqcVlSQmV3cW53VVkvMWlodmp2TUpoSnNK?= =?utf-8?B?NnZ6NitOMVpyemNpTjN2bXVxWHNtNmpkOUpUTU1ySlUvNGUvLzYwQWJNTGl0?= =?utf-8?B?R2tkVEI5eVh4OEpLbm1XbGJxRDRQRVc2YkJvUjBQb01sMHRQZWxzTmdlb3ly?= =?utf-8?B?MVRLdkM2eEw0OHR5WE1pdEZBTWZIdVFleVV3dkhDRm5vK1NLblc4ckFQZVZW?= =?utf-8?B?em0vYUhUVFJQVzNpcktHZHV4aTFUZUUwYmgzMVFMOXk0Ylg2M256SEUvVHlp?= =?utf-8?B?cHBlSkNzcDhTZHJ4Zmx0SUpIaGpOMlVLa0J6SjFrZHREY09tdnVmcG10MFRn?= =?utf-8?B?aWhwMnBVWHgvQWJFc1p4ck1IWlNsK2hocWx4bWd5SXhpd0E1allPdXZOY2ZN?= =?utf-8?B?K0kvQVNIelFLVkIzeUZWbE9NUFVIenNBNm93ZEJNRlowZzFSNElnc2lHcm5x?= =?utf-8?B?T0prNTV3d2xwMGdvUkJVR3NKNWltdmxMM1luVDR6VUJKTExseGJUNUU0cVp0?= =?utf-8?B?V1ZTM3gxK2pjL0IxUjNYZnJmeXRIU2U4djlmVjh3YU5pN09QanFLbnkvc3JR?= =?utf-8?B?Ykk4UitpaStSTE1Ddk1jeXNxazNpRmJYZkgrMFM5MXZzTnpPTW5PUlF0WStj?= =?utf-8?B?dEo5KzluUmdQd29DQlRablV4ajZCVXMwb2VvKzh4U3R5K3dSUHBLMTlYWXU3?= =?utf-8?B?QU91TzBQMk90elVOeDliUEhCM3dYQ0hlQlYxdU1YU21oTzJLRkhoMi9kbncw?= =?utf-8?B?NmxzV1BLcDNFSkYyUnE5cjdCbDdWK1dWTmxoQWhKOWlYcTFZY2VjOU1FelZ5?= =?utf-8?B?WTFVSzdVd0ZSb0FEZHZhM2h5bUtiaVBkUzg4SmQ5SVVxb05pZ1gxeFc4b09l?= =?utf-8?B?UnIrWTJieWJZWVhKWi9Uckx1TVVSUi9LaVdDbWVMK3c3TDluRG8wTkFTSzBG?= =?utf-8?B?bXB3Z3NQdWU1TklhWGtxK0FmVk5ZNW16aXF1VmxRdUpndCsxcDcxMnNUWjlP?= =?utf-8?B?WDB5WkM0UVgvREUzaUJlTUROcWtMS2ZjSHltZFRnbmc1amVoRVR2TkV0eHhi?= =?utf-8?B?NmE3TU40czBMSlROWTZKUW13WThjT1o0OTlkaFFmUlBRWHU3cGw2RWNkaWlQ?= =?utf-8?B?cXZycDNYbjJaV0gxejlUcnVVb0xHZGNTZ3J2R0cyeVRSSVRNK1hMdGdkQTFa?= =?utf-8?B?UlZBdk14SzdTbXNqNFJwaXYya3AxVWZnN3RiZWYxdHBwVkliYWErQ0ZaM2xi?= =?utf-8?B?ZmozMG9TWlVqeDhaMjNBM1luOTBmMHhGLzJacnpKMGFKcUNJcGVxWGt6RUty?= =?utf-8?B?aGhSZUJ3elRJWmM4K2p2RVljZGttaVlPbUsrVTRCUFhSbzRYYjZIbHZJMHcx?= =?utf-8?B?SEtEZFlycW4vYWp0MTV6Y1hGRUFWWUZoYW01RmE5MCtKcDM5bmR3UWk2VHhM?= =?utf-8?B?cmFDV1FZdTRSVURHRGRTZ2tjMHpham4zN3BRWGR5UHprSVJvcW1rZ2ZWMUlW?= =?utf-8?B?Wk95QXhpSllhWDUwOW5ZdDl0cU1ZaWtJdEVNMW4vQnVQQnVZV01HY2tXRmVp?= =?utf-8?B?UDZ1QXRUUXMyb1JpYmdyd3QwczBweVhBOERIZ3RqZVB0bTBWUmxiZmt0TjJw?= =?utf-8?B?c1hTZVVRNEhJSGpwb1dubHhMRDV5OXdiRDhESUI3bmpJTnhXQnN1WTlCbG9G?= =?utf-8?B?WjBIOUR2aUU4RS84RWU0ckJuNjdkYXJSNFBFR3h3azdwdlp6NXJxUUVMQkJ0?= =?utf-8?B?bFpwaGFZTWNQRUMxSGwvUFFZZFh0U2JpWGZFOEovbkZJMW1yY3NKbG1INWpT?= =?utf-8?Q?TDH/V3CXz/TRpDoUjdrVqBzpV?= X-OriginatorOrg: efficios.com X-MS-Exchange-CrossTenant-Network-Message-Id: 405b067e-34cd-4cf5-56c8-08dde7153da4 X-MS-Exchange-CrossTenant-AuthSource: YQXPR01MB5418.CANPRD01.PROD.OUTLOOK.COM X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 29 Aug 2025 16:00:57.2686 (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: wWHeUD7zNGlXi7LBfAeEuFdKEAqS1ZxFeqLFWvovHfZyL5lQwKFbHi7hnjV8OTOjm1RNH/qFT3nzsvj2gVHXiQ== X-MS-Exchange-Transport-CrossTenantHeadersStamped: YT3PR01MB9009 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 2025-08-29 09:40, Tom Tromey wrote: >>>>>> "Simon" == Simon Marchi writes: > > Simon> It's currently not possible to use filtered_iterator with a pointer as > Simon> the base iterator type. This patch makes it possible. > > I have a question about the forwarding constructor. > > Simon> + using iterator_category = > Simon> + typename std::iterator_traits::iterator_category; > Simon> + ; > Simon> + using difference_type = > Simon> + typename std::iterator_traits::difference_type; > Simon> + ; > > Couple of random ";" there. Oops, thanks, assignment operators were misplaced too. > Simon> @@ -44,6 +46,10 @@ class filtered_iterator > Simon> : m_it (std::forward (args)...) > Simon> { skip_filtered (); } > > It seems to me that the presence of this constructor means that some > existing code could change meaning. It's not really likely but I wonder > how we would know. Yeah, you're right. For the meaning of a call site to change, that call site would need: - a BaseIterator that can be constructed from two arguments A and B (the existing constructor of filtered_iterator would then be called) - that same BaseIterator can be constructed from the single argument A, and also from the single argument B (the new constructor of filtered_iterator would then be called) I don't know how to know for sure whether this happens. > I also wonder what this constructor is even needed for since it seems > like a filtered iterator should just wrap an ordinary one anyway. I think it's just a shortcut to have less boilerplate when you need to instantiate a filtered_iterator. I think I would prefer having just the begin/end version, so that there is less magic involved, making it easier to debug compilation errors, at the expense of having to be more explicit at the call sites. I think I tried it in a previous iteration of this series and gave up, but if you think it's a good idea, I can try it again. Simon