[{"id":36143,"web_url":"https://patchwork.libcamera.org/comment/36143/","msgid":"<175975501635.3214037.10960922611413734140@localhost>","date":"2025-10-06T12:50:16","subject":"Re: [RFC PATCH v1 1/7] libcamera: base: bound_method: Strip\n\tqualifiers in argument pack","submitter":{"id":184,"url":"https://patchwork.libcamera.org/api/people/184/","name":"Stefan Klug","email":"stefan.klug@ideasonboard.com"},"content":"Hi Barnabás,\n\nThank you for the patch.\n\nQuoting Barnabás Pőcze (2025-09-24 14:47:06)\n> Having extra qualifiers, especially `const`, simply inhibits optimization\n> opportunities as it prevents e.g. moving values out of pack object. So\n> strip the qualifiers.\n> \n> Signed-off-by: Barnabás Pőcze <barnabas.pocze@ideasonboard.com>\n\nI fully trust you on this one :-)\nReviewed-by: Stefan Klug <stefan.klug@ideasonboard.com>\n\nCheers,\nStefan\n\n> ---\n>  include/libcamera/base/bound_method.h | 4 ++--\n>  1 file changed, 2 insertions(+), 2 deletions(-)\n> \n> diff --git a/include/libcamera/base/bound_method.h b/include/libcamera/base/bound_method.h\n> index 91fe8b8cb..cb642e0a9 100644\n> --- a/include/libcamera/base/bound_method.h\n> +++ b/include/libcamera/base/bound_method.h\n> @@ -39,7 +39,7 @@ public:\n>         {\n>         }\n>  \n> -       std::tuple<typename std::remove_reference_t<Args>...> args_;\n> +       std::tuple<std::remove_cv_t<std::remove_reference_t<Args>>...> args_;\n>         R ret_;\n>  };\n>  \n> @@ -53,7 +53,7 @@ public:\n>         {\n>         }\n>  \n> -       std::tuple<typename std::remove_reference_t<Args>...> args_;\n> +       std::tuple<std::remove_cv_t<std::remove_reference_t<Args>>...> args_;\n>  };\n>  \n>  class BoundMethodBase\n> -- \n> 2.51.0\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 6215FBF415\n\tfor <parsemail@patchwork.libcamera.org>;\n\tMon,  6 Oct 2025 12:50:21 +0000 (UTC)","from lancelot.ideasonboard.com (localhost [IPv6:::1])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTP id 69B436B5F3;\n\tMon,  6 Oct 2025 14:50:20 +0200 (CEST)","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 16D016936E\n\tfor <libcamera-devel@lists.libcamera.org>;\n\tMon,  6 Oct 2025 14:50:19 +0200 (CEST)","from ideasonboard.com (unknown\n\t[IPv6:2a00:6020:448c:6c00:2e2:f331:f320:caae])\n\tby perceval.ideasonboard.com (Postfix) with UTF8SMTPSA id 68E24BD2;\n\tMon,  6 Oct 2025 14:48:46 +0200 (CEST)"],"Authentication-Results":"lancelot.ideasonboard.com; dkim=pass (1024-bit key;\n\tunprotected) header.d=ideasonboard.com header.i=@ideasonboard.com\n\theader.b=\"X66yg6Vf\"; dkim-atps=neutral","DKIM-Signature":"v=1; a=rsa-sha256; c=relaxed/simple; d=ideasonboard.com;\n\ts=mail; t=1759754926;\n\tbh=SMxD0Vic0mKFkW8+QVkhsUSaRVaMAna2km7fd3SooXs=;\n\th=In-Reply-To:References:Subject:From:To:Date:From;\n\tb=X66yg6VfbtWdfERNgfvjAicrleqzKMXymqTpHIe2FigG09XyLRnyO9FbF4Hsxs2Bf\n\t7NHY+0/vwMI/ANR9bYEDz7VatbpF4IjuDJWzxJBqtzjpAaQG5/fjraf/dhm19jwvYV\n\tderWs0qJIwf1Pxja8sAYMqkAaqyHofO9Io0ArzNI=","Content-Type":"text/plain; charset=\"utf-8\"","MIME-Version":"1.0","Content-Transfer-Encoding":"quoted-printable","In-Reply-To":"<20250924124713.3361707-2-barnabas.pocze@ideasonboard.com>","References":"<20250924124713.3361707-1-barnabas.pocze@ideasonboard.com>\n\t<20250924124713.3361707-2-barnabas.pocze@ideasonboard.com>","Subject":"Re: [RFC PATCH v1 1/7] libcamera: base: bound_method: Strip\n\tqualifiers in argument pack","From":"Stefan Klug <stefan.klug@ideasonboard.com>","To":"=?utf-8?q?Barnab=C3=A1s_P=C5=91cze?= <barnabas.pocze@ideasonboard.com>,\n\tKieran Bingham <kieran.bingham@ideasonboard.com>, \n\tlibcamera-devel@lists.libcamera.org","Date":"Mon, 06 Oct 2025 14:50:16 +0200","Message-ID":"<175975501635.3214037.10960922611413734140@localhost>","User-Agent":"alot/0.12.dev8+g2c003385c862.d20250602","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>","Errors-To":"libcamera-devel-bounces@lists.libcamera.org","Sender":"\"libcamera-devel\" <libcamera-devel-bounces@lists.libcamera.org>"}},{"id":36159,"web_url":"https://patchwork.libcamera.org/comment/36159/","msgid":"<175982629579.756374.2129523490562871131@ping.linuxembedded.co.uk>","date":"2025-10-07T08:38:15","subject":"Re: [RFC PATCH v1 1/7] libcamera: base: bound_method: Strip\n\tqualifiers in argument pack","submitter":{"id":4,"url":"https://patchwork.libcamera.org/api/people/4/","name":"Kieran Bingham","email":"kieran.bingham@ideasonboard.com"},"content":"Quoting Stefan Klug (2025-10-06 13:50:16)\n> Hi Barnabás,\n> \n> Thank you for the patch.\n> \n> Quoting Barnabás Pőcze (2025-09-24 14:47:06)\n> > Having extra qualifiers, especially `const`, simply inhibits optimization\n> > opportunities as it prevents e.g. moving values out of pack object. So\n> > strip the qualifiers.\n> > \n> > Signed-off-by: Barnabás Pőcze <barnabas.pocze@ideasonboard.com>\n> \n> I fully trust you on this one :-)\n> Reviewed-by: Stefan Klug <stefan.klug@ideasonboard.com>\n> \n> Cheers,\n> Stefan\n> \n> > ---\n> >  include/libcamera/base/bound_method.h | 4 ++--\n> >  1 file changed, 2 insertions(+), 2 deletions(-)\n> > \n> > diff --git a/include/libcamera/base/bound_method.h b/include/libcamera/base/bound_method.h\n> > index 91fe8b8cb..cb642e0a9 100644\n> > --- a/include/libcamera/base/bound_method.h\n> > +++ b/include/libcamera/base/bound_method.h\n> > @@ -39,7 +39,7 @@ public:\n> >         {\n> >         }\n> >  \n> > -       std::tuple<typename std::remove_reference_t<Args>...> args_;\n> > +       std::tuple<std::remove_cv_t<std::remove_reference_t<Args>>...> args_;\n\nWhile trying to understand the implications of this I also came across\n  std::decay - https://en.cppreference.com/w/cpp/types/decay.html\n\nIs that equivalent to what we're trying to achieve here?\n\nAnd there's also\nhttps://en.cppreference.com/w/cpp/types/remove_cvref.html - but that's\nC++20 only...\n\n--\nKieran\n\n> >         R ret_;\n> >  };\n> >  \n> > @@ -53,7 +53,7 @@ public:\n> >         {\n> >         }\n> >  \n> > -       std::tuple<typename std::remove_reference_t<Args>...> args_;\n> > +       std::tuple<std::remove_cv_t<std::remove_reference_t<Args>>...> args_;\n> >  };\n> >  \n> >  class BoundMethodBase\n> > -- \n> > 2.51.0\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 6D063BF415\n\tfor <parsemail@patchwork.libcamera.org>;\n\tTue,  7 Oct 2025 08:38:21 +0000 (UTC)","from lancelot.ideasonboard.com (localhost [IPv6:::1])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTP id 5E0266B5F3;\n\tTue,  7 Oct 2025 10:38:20 +0200 (CEST)","from perceval.ideasonboard.com (perceval.ideasonboard.com\n\t[213.167.242.64])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTPS id 5E1D16B58E\n\tfor <libcamera-devel@lists.libcamera.org>;\n\tTue,  7 Oct 2025 10:38:19 +0200 (CEST)","from pendragon.ideasonboard.com\n\t(cpc89244-aztw30-2-0-cust6594.18-1.cable.virginm.net [86.31.185.195])\n\tby perceval.ideasonboard.com (Postfix) with ESMTPSA id CDA261122;\n\tTue,  7 Oct 2025 10:36:45 +0200 (CEST)"],"Authentication-Results":"lancelot.ideasonboard.com; dkim=pass (1024-bit key;\n\tunprotected) header.d=ideasonboard.com header.i=@ideasonboard.com\n\theader.b=\"Aaz79mIM\"; dkim-atps=neutral","DKIM-Signature":"v=1; a=rsa-sha256; c=relaxed/simple; d=ideasonboard.com;\n\ts=mail; t=1759826205;\n\tbh=Z3navlzYpMjGvnEefDUjCiuxd1qVOKJfh7nmqKnsKvQ=;\n\th=In-Reply-To:References:Subject:From:To:Date:From;\n\tb=Aaz79mIM94dy17hw7E+jspReVoHJ7exco3JVYzHcm/Q3uA/wR5VZo7R+y+Iu51Auy\n\t6xhlp4tSkeyl/rewee/HTJEExpa+y7J3zAgEkP6wf8sIIjKPdV5W9hvo8o9UtvFQ2V\n\t9xHYHkYfkggjj4VXHbV8q67KaHeDxP9kYPfiy+Zg=","Content-Type":"text/plain; charset=\"utf-8\"","MIME-Version":"1.0","Content-Transfer-Encoding":"quoted-printable","In-Reply-To":"<175975501635.3214037.10960922611413734140@localhost>","References":"<20250924124713.3361707-1-barnabas.pocze@ideasonboard.com>\n\t<20250924124713.3361707-2-barnabas.pocze@ideasonboard.com>\n\t<175975501635.3214037.10960922611413734140@localhost>","Subject":"Re: [RFC PATCH v1 1/7] libcamera: base: bound_method: Strip\n\tqualifiers in argument pack","From":"Kieran Bingham <kieran.bingham@ideasonboard.com>","To":"=?utf-8?q?Barnab=C3=A1s_P=C5=91cze?= <barnabas.pocze@ideasonboard.com>,\n\tStefan Klug <stefan.klug@ideasonboard.com>, \n\tlibcamera-devel@lists.libcamera.org","Date":"Tue, 07 Oct 2025 09:38:15 +0100","Message-ID":"<175982629579.756374.2129523490562871131@ping.linuxembedded.co.uk>","User-Agent":"alot/0.9.1","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>","Errors-To":"libcamera-devel-bounces@lists.libcamera.org","Sender":"\"libcamera-devel\" <libcamera-devel-bounces@lists.libcamera.org>"}},{"id":36164,"web_url":"https://patchwork.libcamera.org/comment/36164/","msgid":"<0dceae27-98a0-4d86-9354-46e69a416106@ideasonboard.com>","date":"2025-10-07T10:50:44","subject":"Re: [RFC PATCH v1 1/7] libcamera: base: bound_method: Strip\n\tqualifiers in argument pack","submitter":{"id":216,"url":"https://patchwork.libcamera.org/api/people/216/","name":"Barnabás Pőcze","email":"barnabas.pocze@ideasonboard.com"},"content":"2025. 10. 07. 10:38 keltezéssel, Kieran Bingham írta:\n> Quoting Stefan Klug (2025-10-06 13:50:16)\n>> Hi Barnabás,\n>>\n>> Thank you for the patch.\n>>\n>> Quoting Barnabás Pőcze (2025-09-24 14:47:06)\n>>> Having extra qualifiers, especially `const`, simply inhibits optimization\n>>> opportunities as it prevents e.g. moving values out of pack object. So\n>>> strip the qualifiers.\n>>>\n>>> Signed-off-by: Barnabás Pőcze <barnabas.pocze@ideasonboard.com>\n>>\n>> I fully trust you on this one :-)\n>> Reviewed-by: Stefan Klug <stefan.klug@ideasonboard.com>\n>>\n>> Cheers,\n>> Stefan\n>>\n>>> ---\n>>>   include/libcamera/base/bound_method.h | 4 ++--\n>>>   1 file changed, 2 insertions(+), 2 deletions(-)\n>>>\n>>> diff --git a/include/libcamera/base/bound_method.h b/include/libcamera/base/bound_method.h\n>>> index 91fe8b8cb..cb642e0a9 100644\n>>> --- a/include/libcamera/base/bound_method.h\n>>> +++ b/include/libcamera/base/bound_method.h\n>>> @@ -39,7 +39,7 @@ public:\n>>>          {\n>>>          }\n>>>   \n>>> -       std::tuple<typename std::remove_reference_t<Args>...> args_;\n>>> +       std::tuple<std::remove_cv_t<std::remove_reference_t<Args>>...> args_;\n> \n> While trying to understand the implications of this I also came across\n>    std::decay - https://en.cppreference.com/w/cpp/types/decay.html\n> \n> Is that equivalent to what we're trying to achieve here?\n\nThat's a good point. I think that is essentially the intention. My only\nconcern is arrays because those decay into a simple pointer, which kind\nof goes against the \"copy\" behaviour.\n\nAnd crucially, this part is only used for function calls, so `Args` is\nargument types. Those cannot be arrays or functions. So in that case\n`std::decay` is equivalent to `std::remove_cvref`.\n\n\nRegards,\nBarnabás Pőcze\n\n> \n> And there's also\n> https://en.cppreference.com/w/cpp/types/remove_cvref.html - but that's\n> C++20 only...\n> \n> --\n> Kieran\n> \n>>>          R ret_;\n>>>   };\n>>>   \n>>> @@ -53,7 +53,7 @@ public:\n>>>          {\n>>>          }\n>>>   \n>>> -       std::tuple<typename std::remove_reference_t<Args>...> args_;\n>>> +       std::tuple<std::remove_cv_t<std::remove_reference_t<Args>>...> args_;\n>>>   };\n>>>   \n>>>   class BoundMethodBase\n>>> -- \n>>> 2.51.0\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 28695C324C\n\tfor <parsemail@patchwork.libcamera.org>;\n\tTue,  7 Oct 2025 10:50:55 +0000 (UTC)","from lancelot.ideasonboard.com (localhost [IPv6:::1])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTP id D9E036B5F3;\n\tTue,  7 Oct 2025 12:50:53 +0200 (CEST)","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 63DEC69367\n\tfor <libcamera-devel@lists.libcamera.org>;\n\tTue,  7 Oct 2025 12:50:52 +0200 (CEST)","from [IPV6:2a00:1110:12e:cbc3:f300:f085:341d:fa93]\n\t(2A001110012ECBC3F300F085341DFA93.mobile.pool.telekom.hu\n\t[IPv6:2a00:1110:12e:cbc3:f300:f085:341d:fa93])\n\tby perceval.ideasonboard.com (Postfix) with ESMTPSA id CCEE7929;\n\tTue,  7 Oct 2025 12:49:18 +0200 (CEST)"],"Authentication-Results":"lancelot.ideasonboard.com; dkim=pass (1024-bit key;\n\tunprotected) header.d=ideasonboard.com header.i=@ideasonboard.com\n\theader.b=\"TqpuATRT\"; dkim-atps=neutral","DKIM-Signature":"v=1; a=rsa-sha256; c=relaxed/simple; d=ideasonboard.com;\n\ts=mail; t=1759834159;\n\tbh=cYg5YwGU1TfV9fkeSfJ/UL+pssYokJ2Llk5CgMwltEk=;\n\th=Date:Subject:To:References:From:In-Reply-To:From;\n\tb=TqpuATRTBDhC8Bfy++MZ+wM1fTVqy3U8eXxrZ/zaoro4GIgIchDIlsjLW8AGrDtba\n\t+Lj7J1zIppQG0UmaSIsBboptk5VrflC4sQJWPzwfE6vfkkEClwwNHzqh047N1c2lKX\n\tJuvgB65ZkOVRTFCX2WvYtl7P1IvjSEN7yk1FZ8Wo=","Message-ID":"<0dceae27-98a0-4d86-9354-46e69a416106@ideasonboard.com>","Date":"Tue, 7 Oct 2025 12:50:44 +0200","MIME-Version":"1.0","User-Agent":"Mozilla Thunderbird","Subject":"Re: [RFC PATCH v1 1/7] libcamera: base: bound_method: Strip\n\tqualifiers in argument pack","To":"Kieran Bingham <kieran.bingham@ideasonboard.com>,\n\tStefan Klug <stefan.klug@ideasonboard.com>,\n\tlibcamera-devel@lists.libcamera.org","References":"<20250924124713.3361707-1-barnabas.pocze@ideasonboard.com>\n\t<20250924124713.3361707-2-barnabas.pocze@ideasonboard.com>\n\t<175975501635.3214037.10960922611413734140@localhost>\n\t<175982629579.756374.2129523490562871131@ping.linuxembedded.co.uk>","From":"=?utf-8?q?Barnab=C3=A1s_P=C5=91cze?= <barnabas.pocze@ideasonboard.com>","Content-Language":"en-US, hu-HU","In-Reply-To":"<175982629579.756374.2129523490562871131@ping.linuxembedded.co.uk>","Content-Type":"text/plain; charset=UTF-8; format=flowed","Content-Transfer-Encoding":"8bit","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>","Errors-To":"libcamera-devel-bounces@lists.libcamera.org","Sender":"\"libcamera-devel\" <libcamera-devel-bounces@lists.libcamera.org>"}},{"id":36165,"web_url":"https://patchwork.libcamera.org/comment/36165/","msgid":"<175983578873.1246375.4428048028023261805@ping.linuxembedded.co.uk>","date":"2025-10-07T11:16:28","subject":"Re: [RFC PATCH v1 1/7] libcamera: base: bound_method: Strip\n\tqualifiers in argument pack","submitter":{"id":4,"url":"https://patchwork.libcamera.org/api/people/4/","name":"Kieran Bingham","email":"kieran.bingham@ideasonboard.com"},"content":"Quoting Barnabás Pőcze (2025-10-07 11:50:44)\n> 2025. 10. 07. 10:38 keltezéssel, Kieran Bingham írta:\n> > Quoting Stefan Klug (2025-10-06 13:50:16)\n> >> Hi Barnabás,\n> >>\n> >> Thank you for the patch.\n> >>\n> >> Quoting Barnabás Pőcze (2025-09-24 14:47:06)\n> >>> Having extra qualifiers, especially `const`, simply inhibits optimization\n> >>> opportunities as it prevents e.g. moving values out of pack object. So\n> >>> strip the qualifiers.\n> >>>\n> >>> Signed-off-by: Barnabás Pőcze <barnabas.pocze@ideasonboard.com>\n> >>\n> >> I fully trust you on this one :-)\n> >> Reviewed-by: Stefan Klug <stefan.klug@ideasonboard.com>\n> >>\n> >> Cheers,\n> >> Stefan\n> >>\n> >>> ---\n> >>>   include/libcamera/base/bound_method.h | 4 ++--\n> >>>   1 file changed, 2 insertions(+), 2 deletions(-)\n> >>>\n> >>> diff --git a/include/libcamera/base/bound_method.h b/include/libcamera/base/bound_method.h\n> >>> index 91fe8b8cb..cb642e0a9 100644\n> >>> --- a/include/libcamera/base/bound_method.h\n> >>> +++ b/include/libcamera/base/bound_method.h\n> >>> @@ -39,7 +39,7 @@ public:\n> >>>          {\n> >>>          }\n> >>>   \n> >>> -       std::tuple<typename std::remove_reference_t<Args>...> args_;\n> >>> +       std::tuple<std::remove_cv_t<std::remove_reference_t<Args>>...> args_;\n> > \n> > While trying to understand the implications of this I also came across\n> >    std::decay - https://en.cppreference.com/w/cpp/types/decay.html\n> > \n> > Is that equivalent to what we're trying to achieve here?\n> \n> That's a good point. I think that is essentially the intention. My only\n> concern is arrays because those decay into a simple pointer, which kind\n> of goes against the \"copy\" behaviour.\n> \n> And crucially, this part is only used for function calls, so `Args` is\n> argument types. Those cannot be arrays or functions. So in that case\n> `std::decay` is equivalent to `std::remove_cvref`.\n\nWell, I think I understand the intent now so which ever way you choose\non this for your best/preferred fit:\n\nReviewed-by: Kieran Bingham <kieran.bingham@ideasonboard.com>\n\n> Regards,\n> Barnabás Pőcze\n> \n> > \n> > And there's also\n> > https://en.cppreference.com/w/cpp/types/remove_cvref.html - but that's\n> > C++20 only...\n> > \n> > --\n> > Kieran\n> > \n> >>>          R ret_;\n> >>>   };\n> >>>   \n> >>> @@ -53,7 +53,7 @@ public:\n> >>>          {\n> >>>          }\n> >>>   \n> >>> -       std::tuple<typename std::remove_reference_t<Args>...> args_;\n> >>> +       std::tuple<std::remove_cv_t<std::remove_reference_t<Args>>...> args_;\n> >>>   };\n> >>>   \n> >>>   class BoundMethodBase\n> >>> -- \n> >>> 2.51.0\n> >>>\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 9A697BF415\n\tfor <parsemail@patchwork.libcamera.org>;\n\tTue,  7 Oct 2025 11:16:34 +0000 (UTC)","from lancelot.ideasonboard.com (localhost [IPv6:::1])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTP id 4F5FF6B5F3;\n\tTue,  7 Oct 2025 13:16:33 +0200 (CEST)","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 8E00269367\n\tfor <libcamera-devel@lists.libcamera.org>;\n\tTue,  7 Oct 2025 13:16:31 +0200 (CEST)","from pendragon.ideasonboard.com\n\t(cpc89244-aztw30-2-0-cust6594.18-1.cable.virginm.net [86.31.185.195])\n\tby perceval.ideasonboard.com (Postfix) with ESMTPSA id E3714929;\n\tTue,  7 Oct 2025 13:14:57 +0200 (CEST)"],"Authentication-Results":"lancelot.ideasonboard.com; dkim=pass (1024-bit key;\n\tunprotected) header.d=ideasonboard.com header.i=@ideasonboard.com\n\theader.b=\"GZjlB8lT\"; dkim-atps=neutral","DKIM-Signature":"v=1; a=rsa-sha256; c=relaxed/simple; d=ideasonboard.com;\n\ts=mail; t=1759835698;\n\tbh=Ah+wwgMEpiSscGyaXi2da9Yjd0cVVS63x6NhW4ZwBE8=;\n\th=In-Reply-To:References:Subject:From:To:Date:From;\n\tb=GZjlB8lT1OL01muMKrOa9gjXl6/KbOGNSwOgkwN1P/lUxx5PtZXaSWrIxAbfZtUpt\n\ty902zrZnE2kGi9b2QNaX8vBkTyWrwmCTz35yE4bQxeP8oicMnt7p6K1jwoLOhXAuHp\n\twjdha6cjFDDA8G8eMByGfC7gXS49R0ywc1FO/U9A=","Content-Type":"text/plain; charset=\"utf-8\"","MIME-Version":"1.0","Content-Transfer-Encoding":"quoted-printable","In-Reply-To":"<0dceae27-98a0-4d86-9354-46e69a416106@ideasonboard.com>","References":"<20250924124713.3361707-1-barnabas.pocze@ideasonboard.com>\n\t<20250924124713.3361707-2-barnabas.pocze@ideasonboard.com>\n\t<175975501635.3214037.10960922611413734140@localhost>\n\t<175982629579.756374.2129523490562871131@ping.linuxembedded.co.uk>\n\t<0dceae27-98a0-4d86-9354-46e69a416106@ideasonboard.com>","Subject":"Re: [RFC PATCH v1 1/7] libcamera: base: bound_method: Strip\n\tqualifiers in argument pack","From":"Kieran Bingham <kieran.bingham@ideasonboard.com>","To":"=?utf-8?q?Barnab=C3=A1s_P=C5=91cze?= <barnabas.pocze@ideasonboard.com>,\n\tStefan Klug <stefan.klug@ideasonboard.com>, \n\tlibcamera-devel@lists.libcamera.org","Date":"Tue, 07 Oct 2025 12:16:28 +0100","Message-ID":"<175983578873.1246375.4428048028023261805@ping.linuxembedded.co.uk>","User-Agent":"alot/0.9.1","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>","Errors-To":"libcamera-devel-bounces@lists.libcamera.org","Sender":"\"libcamera-devel\" <libcamera-devel-bounces@lists.libcamera.org>"}}]