[{"id":14948,"web_url":"https://patchwork.libcamera.org/comment/14948/","msgid":"<YBu03L6/Q84KAjZj@oden.dyn.berto.se>","date":"2021-02-04T08:48:28","subject":"Re: [libcamera-devel] [PATCH 1/2] libcamera: Add macro to\n\tconditionally use [[nodiscard]]","submitter":{"id":5,"url":"https://patchwork.libcamera.org/api/people/5/","name":"Niklas Söderlund","email":"niklas.soderlund@ragnatech.se"},"content":"Hi Laurent,\n\nThanks for your work.\n\nOn 2021-02-04 05:59:50 +0200, Laurent Pinchart wrote:\n> The [[nodiscard]] attribute has been added to C++17. It can thus be used\n> inside libcamera, but would prevent applications compiled for C++14 to\n> use libcamera if the attribute was used in public headers.\n> \n> To offer this feature when the application is compiled with a\n> recent-enough C++ version, as well as for compiling libcamera itself,\n> add a __nodiscard macro that expands as [[nodiscard]] when using C++17\n> or newer.\n> \n> Signed-off-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>\n\nReviewed-by: Niklas Söderlund <niklas.soderlund@ragnatech.se>\n\n> ---\n>  include/libcamera/compiler.h  | 16 ++++++++++++++++\n>  include/libcamera/meson.build |  1 +\n>  2 files changed, 17 insertions(+)\n>  create mode 100644 include/libcamera/compiler.h\n> \n> diff --git a/include/libcamera/compiler.h b/include/libcamera/compiler.h\n> new file mode 100644\n> index 000000000000..dc56dbb8b792\n> --- /dev/null\n> +++ b/include/libcamera/compiler.h\n> @@ -0,0 +1,16 @@\n> +/* SPDX-License-Identifier: LGPL-2.1-or-later */\n> +/*\n> + * Copyright (C) 2021, Google Inc.\n> + *\n> + * compiler.h - Compiler support\n> + */\n> +#ifndef __LIBCAMERA_COMPILER_H__\n> +#define __LIBCAMERA_COMPILER_H__\n> +\n> +#if __cplusplus >= 201703L\n> +#define __nodiscard\t\t[[nodiscard]]\n> +#else\n> +#define __nodiscard\n> +#endif\n> +\n> +#endif /* __LIBCAMERA_COMPILER_H__ */\n> diff --git a/include/libcamera/meson.build b/include/libcamera/meson.build\n> index cf2935f1ee95..13e9eeb6d6ad 100644\n> --- a/include/libcamera/meson.build\n> +++ b/include/libcamera/meson.build\n> @@ -5,6 +5,7 @@ libcamera_public_headers = files([\n>      'buffer.h',\n>      'camera.h',\n>      'camera_manager.h',\n> +    'compiler.h',\n>      'controls.h',\n>      'extensible.h',\n>      'file_descriptor.h',\n> -- \n> Regards,\n> \n> Laurent Pinchart\n> \n> _______________________________________________\n> libcamera-devel mailing list\n> libcamera-devel@lists.libcamera.org\n> https://lists.libcamera.org/listinfo/libcamera-devel","headers":{"Return-Path":"<libcamera-devel-bounces@lists.libcamera.org>","X-Original-To":"parsemail@patchwork.libcamera.org","Delivered-To":"parsemail@patchwork.libcamera.org","Received":["from lancelot.ideasonboard.com (lancelot.ideasonboard.com\n\t[92.243.16.209])\n\tby patchwork.libcamera.org (Postfix) with ESMTPS id E28A3BD160\n\tfor <parsemail@patchwork.libcamera.org>;\n\tThu,  4 Feb 2021 08:48:32 +0000 (UTC)","from lancelot.ideasonboard.com (localhost [IPv6:::1])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTP id 71992613FC;\n\tThu,  4 Feb 2021 09:48:32 +0100 (CET)","from mail-lf1-x12b.google.com (mail-lf1-x12b.google.com\n\t[IPv6:2a00:1450:4864:20::12b])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTPS id 0E9C260107\n\tfor <libcamera-devel@lists.libcamera.org>;\n\tThu,  4 Feb 2021 09:48:30 +0100 (CET)","by mail-lf1-x12b.google.com with SMTP id a8so3335830lfi.8\n\tfor <libcamera-devel@lists.libcamera.org>;\n\tThu, 04 Feb 2021 00:48:30 -0800 (PST)","from localhost (h-209-203.A463.priv.bahnhof.se. [155.4.209.203])\n\tby smtp.gmail.com with ESMTPSA id\n\tj8sm523344lfm.79.2021.02.04.00.48.28\n\t(version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);\n\tThu, 04 Feb 2021 00:48:28 -0800 (PST)"],"Authentication-Results":"lancelot.ideasonboard.com;\n\tdkim=fail reason=\"signature verification failed\" (2048-bit key;\n\tunprotected) header.d=ragnatech-se.20150623.gappssmtp.com\n\theader.i=@ragnatech-se.20150623.gappssmtp.com\n\theader.b=\"KkNc8SjJ\"; dkim-atps=neutral","DKIM-Signature":"v=1; a=rsa-sha256; c=relaxed/relaxed;\n\td=ragnatech-se.20150623.gappssmtp.com; s=20150623;\n\th=date:from:to:cc:subject:message-id:references:mime-version\n\t:content-disposition:content-transfer-encoding:in-reply-to;\n\tbh=9l6Rh6BdkKbF5OpeeFNPD2jEsunv4cFQNWHDSd97a1M=;\n\tb=KkNc8SjJWttgij00Q1nrNo0xJ8ZZUZZE7xjueq0syueytOpERXCq11bS+amMWPAS18\n\tPrrrexkp/7TWUfP6lEQ4cNNZBLSdU5mi3QPQS77eXqV6v0gHecUYHPgGZPPzyD62PmQk\n\tmOemSLGNWvNgbIu8FnB0c3RNE9wk5ZDpimKlxxSS7MRmAdBtXE8CwW8Ur3CSGosqIdhP\n\tCQLqjHA9dqaR2tooyp8CBn9GlsgW/3TqZ0vThezBBfu79iVXmI/AN5c9MWtsQ/rX/vQV\n\toip1ZsrcUfqKi+CRJDnJRH30fArCK2yJ+fa4dE0JL8wpHmGloKXHmNAI4Dzle16bVXWu\n\tTFpw==","X-Google-DKIM-Signature":"v=1; a=rsa-sha256; c=relaxed/relaxed;\n\td=1e100.net; s=20161025;\n\th=x-gm-message-state:date:from:to:cc:subject:message-id:references\n\t:mime-version:content-disposition:content-transfer-encoding\n\t:in-reply-to;\n\tbh=9l6Rh6BdkKbF5OpeeFNPD2jEsunv4cFQNWHDSd97a1M=;\n\tb=U58BKKUxBsUg22Pl9EA5788UUiLW3KNnRiVX7e2ItRpotPJRNHgpCZ8Yco2RrjTMxQ\n\tm9YUz+J7zCyEPmQZKFOehp+e7rP146O3kv5k23jT5Z6fVh5IEHOml8Gkr8trMq2duHJd\n\tqoQa9feI4P3L9RA2XxpKoP6bAfgwrmRgFKjTJL2uNnt4hF0Oe438ZnVIaleycd2bbm65\n\tfXlcXrZCLo2+PviRwSZj8ogTUJwu8ERHzHXOV8F/Dks0lifhmRdeM5xz9NTFul8/TNLX\n\tqzJQ903EzmrXESg7gZWMgG/fLRkqAyZLwC0In3WTBeeqyh7cVMakTk67mZ346rIf6Eyr\n\tI3uQ==","X-Gm-Message-State":"AOAM531OSe/7MZoxVkvWTukZ8LsVITkTfLtKyw61skRSRIY81r7mjD+V\n\tVLDP9RltaFdvJmB+hxzR4JDZX8eWEE5E3ia1","X-Google-Smtp-Source":"ABdhPJzbI3UXCfK25PVLbDknr4M8OpCjwpF82ChjjX6gg/8t62mNRhrFpHWqgTZcLxu7Y0GVWpchXA==","X-Received":"by 2002:a05:6512:a95:: with SMTP id\n\tm21mr4107641lfu.460.1612428509410; \n\tThu, 04 Feb 2021 00:48:29 -0800 (PST)","Date":"Thu, 4 Feb 2021 09:48:28 +0100","From":"Niklas =?iso-8859-1?q?S=F6derlund?= <niklas.soderlund@ragnatech.se>","To":"Laurent Pinchart <laurent.pinchart@ideasonboard.com>","Message-ID":"<YBu03L6/Q84KAjZj@oden.dyn.berto.se>","References":"<20210204035951.23751-1-laurent.pinchart@ideasonboard.com>","MIME-Version":"1.0","Content-Disposition":"inline","In-Reply-To":"<20210204035951.23751-1-laurent.pinchart@ideasonboard.com>","Subject":"Re: [libcamera-devel] [PATCH 1/2] libcamera: Add macro to\n\tconditionally use [[nodiscard]]","X-BeenThere":"libcamera-devel@lists.libcamera.org","X-Mailman-Version":"2.1.29","Precedence":"list","List-Id":"<libcamera-devel.lists.libcamera.org>","List-Unsubscribe":"<https://lists.libcamera.org/options/libcamera-devel>,\n\t<mailto:libcamera-devel-request@lists.libcamera.org?subject=unsubscribe>","List-Archive":"<https://lists.libcamera.org/pipermail/libcamera-devel/>","List-Post":"<mailto:libcamera-devel@lists.libcamera.org>","List-Help":"<mailto:libcamera-devel-request@lists.libcamera.org?subject=help>","List-Subscribe":"<https://lists.libcamera.org/listinfo/libcamera-devel>,\n\t<mailto:libcamera-devel-request@lists.libcamera.org?subject=subscribe>","Cc":"libcamera-devel@lists.libcamera.org","Content-Type":"text/plain; charset=\"iso-8859-1\"","Content-Transfer-Encoding":"quoted-printable","Errors-To":"libcamera-devel-bounces@lists.libcamera.org","Sender":"\"libcamera-devel\" <libcamera-devel-bounces@lists.libcamera.org>"}},{"id":14967,"web_url":"https://patchwork.libcamera.org/comment/14967/","msgid":"<7e923d35-e322-89ff-6601-d3564445e672@ideasonboard.com>","date":"2021-02-04T14:28:50","subject":"Re: [libcamera-devel] [PATCH 1/2] libcamera: Add macro to\n\tconditionally use [[nodiscard]]","submitter":{"id":4,"url":"https://patchwork.libcamera.org/api/people/4/","name":"Kieran Bingham","email":"kieran.bingham@ideasonboard.com"},"content":"Hi Laurent,\n\nOn 04/02/2021 03:59, Laurent Pinchart wrote:\n> The [[nodiscard]] attribute has been added to C++17. It can thus be used\n> inside libcamera, but would prevent applications compiled for C++14 to\n> use libcamera if the attribute was used in public headers.\n> \n> To offer this feature when the application is compiled with a\n> recent-enough C++ version, as well as for compiling libcamera itself,\n> add a __nodiscard macro that expands as [[nodiscard]] when using C++17\n> or newer.\n> \n\nNow that we have this, I'd be tempted to also use this style for the\n[[maybe_unused]], and perhaps the [[fallthrough]].\n\nI bet that's another bikeshedding rabbit-hole though.\n\nBut for this\n\nReviewed-by: Kieran Bingham <kieran.bingham@ideasonboard.com>\n\n\n> Signed-off-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>\n> ---\n>  include/libcamera/compiler.h  | 16 ++++++++++++++++\n>  include/libcamera/meson.build |  1 +\n>  2 files changed, 17 insertions(+)\n>  create mode 100644 include/libcamera/compiler.h\n> \n> diff --git a/include/libcamera/compiler.h b/include/libcamera/compiler.h\n> new file mode 100644\n> index 000000000000..dc56dbb8b792\n> --- /dev/null\n> +++ b/include/libcamera/compiler.h\n> @@ -0,0 +1,16 @@\n> +/* SPDX-License-Identifier: LGPL-2.1-or-later */\n> +/*\n> + * Copyright (C) 2021, Google Inc.\n> + *\n> + * compiler.h - Compiler support\n> + */\n> +#ifndef __LIBCAMERA_COMPILER_H__\n> +#define __LIBCAMERA_COMPILER_H__\n> +\n> +#if __cplusplus >= 201703L\n> +#define __nodiscard\t\t[[nodiscard]]\n> +#else\n> +#define __nodiscard\n> +#endif\n> +\n> +#endif /* __LIBCAMERA_COMPILER_H__ */\n> diff --git a/include/libcamera/meson.build b/include/libcamera/meson.build\n> index cf2935f1ee95..13e9eeb6d6ad 100644\n> --- a/include/libcamera/meson.build\n> +++ b/include/libcamera/meson.build\n> @@ -5,6 +5,7 @@ libcamera_public_headers = files([\n>      'buffer.h',\n>      'camera.h',\n>      'camera_manager.h',\n> +    'compiler.h',\n>      'controls.h',\n>      'extensible.h',\n>      'file_descriptor.h',\n>","headers":{"Return-Path":"<libcamera-devel-bounces@lists.libcamera.org>","X-Original-To":"parsemail@patchwork.libcamera.org","Delivered-To":"parsemail@patchwork.libcamera.org","Received":["from lancelot.ideasonboard.com (lancelot.ideasonboard.com\n\t[92.243.16.209])\n\tby patchwork.libcamera.org (Postfix) with ESMTPS id 3F1EEBD162\n\tfor <parsemail@patchwork.libcamera.org>;\n\tThu,  4 Feb 2021 14:28:56 +0000 (UTC)","from lancelot.ideasonboard.com (localhost [IPv6:::1])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTP id B4D4B6141E;\n\tThu,  4 Feb 2021 15:28:55 +0100 (CET)","from perceval.ideasonboard.com (perceval.ideasonboard.com\n\t[IPv6:2001:4b98:dc2:55:216:3eff:fef7:d647])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTPS id 8B47E60305\n\tfor <libcamera-devel@lists.libcamera.org>;\n\tThu,  4 Feb 2021 15:28:53 +0100 (CET)","from [192.168.0.20]\n\t(cpc89244-aztw30-2-0-cust3082.18-1.cable.virginm.net [86.31.172.11])\n\tby perceval.ideasonboard.com (Postfix) with ESMTPSA id 07A97440;\n\tThu,  4 Feb 2021 15:28:52 +0100 (CET)"],"Authentication-Results":"lancelot.ideasonboard.com;\n\tdkim=fail reason=\"signature verification failed\" (1024-bit key;\n\tunprotected) header.d=ideasonboard.com header.i=@ideasonboard.com\n\theader.b=\"MTNkjyyj\"; dkim-atps=neutral","DKIM-Signature":"v=1; a=rsa-sha256; c=relaxed/simple; d=ideasonboard.com;\n\ts=mail; t=1612448933;\n\tbh=/eRLSKJ3/CByxm9UCZ3b36lXJiVLvIB6HhCws5UhKow=;\n\th=Reply-To:Subject:To:References:From:Date:In-Reply-To:From;\n\tb=MTNkjyyjhgMIZShf6nf2KTlQvb2ET3f2D+4TyC7JvrFRD4ptsL0w1vYlJy+706032\n\tDA68q8+gvCsrYXCorMYM6FMSK5BIy5HHn9AKWn/fXs2ceE6eknLfxkminKYxxdPitn\n\tacWSJTm+f39J7IzjvLLD/SovsShLxa8efVWa1Ue4=","To":"Laurent Pinchart <laurent.pinchart@ideasonboard.com>,\n\tlibcamera-devel@lists.libcamera.org","References":"<20210204035951.23751-1-laurent.pinchart@ideasonboard.com>","From":"Kieran Bingham <kieran.bingham@ideasonboard.com>","Autocrypt":"addr=kieran.bingham@ideasonboard.com; keydata=\n\t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\n\tWZw01QYHU/GUV/zHJSFk","Organization":"Ideas on Board","Message-ID":"<7e923d35-e322-89ff-6601-d3564445e672@ideasonboard.com>","Date":"Thu, 4 Feb 2021 14:28:50 +0000","User-Agent":"Mozilla/5.0 (X11; Linux x86_64; rv:68.0) Gecko/20100101\n\tThunderbird/68.10.0","MIME-Version":"1.0","In-Reply-To":"<20210204035951.23751-1-laurent.pinchart@ideasonboard.com>","Content-Language":"en-GB","Subject":"Re: [libcamera-devel] [PATCH 1/2] libcamera: Add macro to\n\tconditionally use [[nodiscard]]","X-BeenThere":"libcamera-devel@lists.libcamera.org","X-Mailman-Version":"2.1.29","Precedence":"list","List-Id":"<libcamera-devel.lists.libcamera.org>","List-Unsubscribe":"<https://lists.libcamera.org/options/libcamera-devel>,\n\t<mailto:libcamera-devel-request@lists.libcamera.org?subject=unsubscribe>","List-Archive":"<https://lists.libcamera.org/pipermail/libcamera-devel/>","List-Post":"<mailto:libcamera-devel@lists.libcamera.org>","List-Help":"<mailto:libcamera-devel-request@lists.libcamera.org?subject=help>","List-Subscribe":"<https://lists.libcamera.org/listinfo/libcamera-devel>,\n\t<mailto:libcamera-devel-request@lists.libcamera.org?subject=subscribe>","Reply-To":"kieran.bingham@ideasonboard.com","Content-Type":"text/plain; charset=\"us-ascii\"","Content-Transfer-Encoding":"7bit","Errors-To":"libcamera-devel-bounces@lists.libcamera.org","Sender":"\"libcamera-devel\" <libcamera-devel-bounces@lists.libcamera.org>"}},{"id":14972,"web_url":"https://patchwork.libcamera.org/comment/14972/","msgid":"<YBwiDRCsmSv/b0gA@pendragon.ideasonboard.com>","date":"2021-02-04T16:34:21","subject":"Re: [libcamera-devel] [PATCH 1/2] libcamera: Add macro to\n\tconditionally use [[nodiscard]]","submitter":{"id":2,"url":"https://patchwork.libcamera.org/api/people/2/","name":"Laurent Pinchart","email":"laurent.pinchart@ideasonboard.com"},"content":"Hi Kieran,\n\nOn Thu, Feb 04, 2021 at 02:28:50PM +0000, Kieran Bingham wrote:\n> On 04/02/2021 03:59, Laurent Pinchart wrote:\n> > The [[nodiscard]] attribute has been added to C++17. It can thus be used\n> > inside libcamera, but would prevent applications compiled for C++14 to\n> > use libcamera if the attribute was used in public headers.\n> > \n> > To offer this feature when the application is compiled with a\n> > recent-enough C++ version, as well as for compiling libcamera itself,\n> > add a __nodiscard macro that expands as [[nodiscard]] when using C++17\n> > or newer.\n> \n> Now that we have this, I'd be tempted to also use this style for the\n> [[maybe_unused]], and perhaps the [[fallthrough]].\n> \n> I bet that's another bikeshedding rabbit-hole though.\n\nI was envisioning usage of this macro for the public headers only. We\ncan discuss using it, and adding new macros, for internal code as well,\nbut we don't have the same issue there of having to build with C++14.\nThe C++ [[...]] attribute syntax takes a bit of time to get used to, but\nis it that bad after the initial phase ? :-)\n\n> But for this\n> \n> Reviewed-by: Kieran Bingham <kieran.bingham@ideasonboard.com>\n> \n> > Signed-off-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>\n> > ---\n> >  include/libcamera/compiler.h  | 16 ++++++++++++++++\n> >  include/libcamera/meson.build |  1 +\n> >  2 files changed, 17 insertions(+)\n> >  create mode 100644 include/libcamera/compiler.h\n> > \n> > diff --git a/include/libcamera/compiler.h b/include/libcamera/compiler.h\n> > new file mode 100644\n> > index 000000000000..dc56dbb8b792\n> > --- /dev/null\n> > +++ b/include/libcamera/compiler.h\n> > @@ -0,0 +1,16 @@\n> > +/* SPDX-License-Identifier: LGPL-2.1-or-later */\n> > +/*\n> > + * Copyright (C) 2021, Google Inc.\n> > + *\n> > + * compiler.h - Compiler support\n> > + */\n> > +#ifndef __LIBCAMERA_COMPILER_H__\n> > +#define __LIBCAMERA_COMPILER_H__\n> > +\n> > +#if __cplusplus >= 201703L\n> > +#define __nodiscard\t\t[[nodiscard]]\n> > +#else\n> > +#define __nodiscard\n> > +#endif\n> > +\n> > +#endif /* __LIBCAMERA_COMPILER_H__ */\n> > diff --git a/include/libcamera/meson.build b/include/libcamera/meson.build\n> > index cf2935f1ee95..13e9eeb6d6ad 100644\n> > --- a/include/libcamera/meson.build\n> > +++ b/include/libcamera/meson.build\n> > @@ -5,6 +5,7 @@ libcamera_public_headers = files([\n> >      'buffer.h',\n> >      'camera.h',\n> >      'camera_manager.h',\n> > +    'compiler.h',\n> >      'controls.h',\n> >      'extensible.h',\n> >      'file_descriptor.h',","headers":{"Return-Path":"<libcamera-devel-bounces@lists.libcamera.org>","X-Original-To":"parsemail@patchwork.libcamera.org","Delivered-To":"parsemail@patchwork.libcamera.org","Received":["from lancelot.ideasonboard.com (lancelot.ideasonboard.com\n\t[92.243.16.209])\n\tby patchwork.libcamera.org (Postfix) with ESMTPS id D69A8BD160\n\tfor <parsemail@patchwork.libcamera.org>;\n\tThu,  4 Feb 2021 16:34:46 +0000 (UTC)","from lancelot.ideasonboard.com (localhost [IPv6:::1])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTP id 6771061442;\n\tThu,  4 Feb 2021 17:34:46 +0100 (CET)","from perceval.ideasonboard.com (perceval.ideasonboard.com\n\t[IPv6:2001:4b98:dc2:55:216:3eff:fef7:d647])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTPS id 46DEF61430\n\tfor <libcamera-devel@lists.libcamera.org>;\n\tThu,  4 Feb 2021 17:34:44 +0100 (CET)","from pendragon.ideasonboard.com (62-78-145-57.bb.dnainternet.fi\n\t[62.78.145.57])\n\tby perceval.ideasonboard.com (Postfix) with ESMTPSA id B800E510;\n\tThu,  4 Feb 2021 17:34:43 +0100 (CET)"],"Authentication-Results":"lancelot.ideasonboard.com;\n\tdkim=fail reason=\"signature verification failed\" (1024-bit key;\n\tunprotected) header.d=ideasonboard.com header.i=@ideasonboard.com\n\theader.b=\"voxLe1bi\"; dkim-atps=neutral","DKIM-Signature":"v=1; a=rsa-sha256; c=relaxed/simple; d=ideasonboard.com;\n\ts=mail; t=1612456483;\n\tbh=ntVl/QAwkWhsLQx1qg6K505o2Tvyd4HWqiVeGpmEiAU=;\n\th=Date:From:To:Cc:Subject:References:In-Reply-To:From;\n\tb=voxLe1biHlKzoccF5R0qs2X1jmIKvQ2gMqELUKuDhRtzpazHry6YrQSowTwV+ViiS\n\t3VKnpVDVpOmegZjNej8eM1ue9iqIXxGoPPuAV6XoFTBpXfpeBmz74iLAc0HFIsdZOj\n\tYcKCm77KcZOba/aIGwS4A5EzUzBlTAG5FElI2bD0=","Date":"Thu, 4 Feb 2021 18:34:21 +0200","From":"Laurent Pinchart <laurent.pinchart@ideasonboard.com>","To":"Kieran Bingham <kieran.bingham@ideasonboard.com>","Message-ID":"<YBwiDRCsmSv/b0gA@pendragon.ideasonboard.com>","References":"<20210204035951.23751-1-laurent.pinchart@ideasonboard.com>\n\t<7e923d35-e322-89ff-6601-d3564445e672@ideasonboard.com>","MIME-Version":"1.0","Content-Disposition":"inline","In-Reply-To":"<7e923d35-e322-89ff-6601-d3564445e672@ideasonboard.com>","Subject":"Re: [libcamera-devel] [PATCH 1/2] libcamera: Add macro to\n\tconditionally use [[nodiscard]]","X-BeenThere":"libcamera-devel@lists.libcamera.org","X-Mailman-Version":"2.1.29","Precedence":"list","List-Id":"<libcamera-devel.lists.libcamera.org>","List-Unsubscribe":"<https://lists.libcamera.org/options/libcamera-devel>,\n\t<mailto:libcamera-devel-request@lists.libcamera.org?subject=unsubscribe>","List-Archive":"<https://lists.libcamera.org/pipermail/libcamera-devel/>","List-Post":"<mailto:libcamera-devel@lists.libcamera.org>","List-Help":"<mailto:libcamera-devel-request@lists.libcamera.org?subject=help>","List-Subscribe":"<https://lists.libcamera.org/listinfo/libcamera-devel>,\n\t<mailto:libcamera-devel-request@lists.libcamera.org?subject=subscribe>","Cc":"libcamera-devel@lists.libcamera.org","Content-Type":"text/plain; charset=\"us-ascii\"","Content-Transfer-Encoding":"7bit","Errors-To":"libcamera-devel-bounces@lists.libcamera.org","Sender":"\"libcamera-devel\" <libcamera-devel-bounces@lists.libcamera.org>"}}]