[{"id":24221,"web_url":"https://patchwork.libcamera.org/comment/24221/","msgid":"<4f61a466-e3c0-4f3b-54a8-9c4c523da6a2@ideasonboard.com>","date":"2022-07-28T11:58:27","subject":"Re: [libcamera-devel] [PATCH] libcamera: Drop unnecessary typename\n\tkeyword used with std::enable_if_t","submitter":{"id":86,"url":"https://patchwork.libcamera.org/api/people/86/","name":"Umang Jain","email":"umang.jain@ideasonboard.com"},"content":"Hi\n\nThank you for patch\n\nOn 7/28/22 16:43, Laurent Pinchart via libcamera-devel wrote:\n> Usage of the std::enable_if_t type doesn't need to be prefixed by\n> typename. Drop the unnecessary keyword.\n>\n> Reported-by: Jacopo Mondi <jacopo@jmondi.org>\n> Signed-off-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>\n\n\nReviewed-by: Umang Jain <umang.jain@ideasonboard.com>\n\n> ---\n>   include/libcamera/base/bound_method.h         |  2 +-\n>   include/libcamera/base/flags.h                |  8 ++--\n>   include/libcamera/base/object.h               |  2 +-\n>   include/libcamera/base/signal.h               |  8 ++--\n>   include/libcamera/controls.h                  | 38 +++++++++----------\n>   .../libcamera/internal/ipa_data_serializer.h  |  2 +-\n>   include/libcamera/internal/yaml_parser.h      |  4 +-\n>   src/libcamera/yaml_parser.cpp                 |  2 +-\n>   8 files changed, 33 insertions(+), 33 deletions(-)\n>\n> diff --git a/include/libcamera/base/bound_method.h b/include/libcamera/base/bound_method.h\n> index e73a4d98ddae..c0275249f389 100644\n> --- a/include/libcamera/base/bound_method.h\n> +++ b/include/libcamera/base/bound_method.h\n> @@ -72,7 +72,7 @@ public:\n>   \t}\n>   \tvirtual ~BoundMethodBase() = default;\n>   \n> -\ttemplate<typename T, typename std::enable_if_t<!std::is_same<Object, T>::value> * = nullptr>\n> +\ttemplate<typename T, std::enable_if_t<!std::is_same<Object, T>::value> * = nullptr>\n>   \tbool match(T *obj) { return obj == obj_; }\n>   \tbool match(Object *object) { return object == object_; }\n>   \n> diff --git a/include/libcamera/base/flags.h b/include/libcamera/base/flags.h\n> index bff3b93c85a1..a1b404bdf23b 100644\n> --- a/include/libcamera/base/flags.h\n> +++ b/include/libcamera/base/flags.h\n> @@ -147,7 +147,7 @@ struct flags_enable_operators {\n>   };\n>   \n>   template<typename E>\n> -typename std::enable_if_t<flags_enable_operators<E>::enable, Flags<E>>\n> +std::enable_if_t<flags_enable_operators<E>::enable, Flags<E>>\n>   operator|(E lhs, E rhs)\n>   {\n>   \tusing type = std::underlying_type_t<E>;\n> @@ -155,7 +155,7 @@ operator|(E lhs, E rhs)\n>   }\n>   \n>   template<typename E>\n> -typename std::enable_if_t<flags_enable_operators<E>::enable, Flags<E>>\n> +std::enable_if_t<flags_enable_operators<E>::enable, Flags<E>>\n>   operator&(E lhs, E rhs)\n>   {\n>   \tusing type = std::underlying_type_t<E>;\n> @@ -163,7 +163,7 @@ operator&(E lhs, E rhs)\n>   }\n>   \n>   template<typename E>\n> -typename std::enable_if_t<flags_enable_operators<E>::enable, Flags<E>>\n> +std::enable_if_t<flags_enable_operators<E>::enable, Flags<E>>\n>   operator^(E lhs, E rhs)\n>   {\n>   \tusing type = std::underlying_type_t<E>;\n> @@ -171,7 +171,7 @@ operator^(E lhs, E rhs)\n>   }\n>   \n>   template<typename E>\n> -typename std::enable_if_t<flags_enable_operators<E>::enable, Flags<E>>\n> +std::enable_if_t<flags_enable_operators<E>::enable, Flags<E>>\n>   operator~(E rhs)\n>   {\n>   \tusing type = std::underlying_type_t<E>;\n> diff --git a/include/libcamera/base/object.h b/include/libcamera/base/object.h\n> index eef1a2c98ef9..933336361155 100644\n> --- a/include/libcamera/base/object.h\n> +++ b/include/libcamera/base/object.h\n> @@ -32,7 +32,7 @@ public:\n>   \tvoid postMessage(std::unique_ptr<Message> msg);\n>   \n>   \ttemplate<typename T, typename R, typename... FuncArgs, typename... Args,\n> -\t\t typename std::enable_if_t<std::is_base_of<Object, T>::value> * = nullptr>\n> +\t\t std::enable_if_t<std::is_base_of<Object, T>::value> * = nullptr>\n>   \tR invokeMethod(R (T::*func)(FuncArgs...), ConnectionType type,\n>   \t\t       Args&&... args)\n>   \t{\n> diff --git a/include/libcamera/base/signal.h b/include/libcamera/base/signal.h\n> index 91000d0d6349..efb591bc5073 100644\n> --- a/include/libcamera/base/signal.h\n> +++ b/include/libcamera/base/signal.h\n> @@ -44,7 +44,7 @@ public:\n>   \t}\n>   \n>   #ifndef __DOXYGEN__\n> -\ttemplate<typename T, typename R, typename std::enable_if_t<std::is_base_of<Object, T>::value> * = nullptr>\n> +\ttemplate<typename T, typename R, std::enable_if_t<std::is_base_of<Object, T>::value> * = nullptr>\n>   \tvoid connect(T *obj, R (T::*func)(Args...),\n>   \t\t     ConnectionType type = ConnectionTypeAuto)\n>   \t{\n> @@ -52,7 +52,7 @@ public:\n>   \t\tSignalBase::connect(new BoundMethodMember<T, R, Args...>(obj, object, func, type));\n>   \t}\n>   \n> -\ttemplate<typename T, typename R, typename std::enable_if_t<!std::is_base_of<Object, T>::value> * = nullptr>\n> +\ttemplate<typename T, typename R, std::enable_if_t<!std::is_base_of<Object, T>::value> * = nullptr>\n>   #else\n>   \ttemplate<typename T, typename R>\n>   #endif\n> @@ -63,7 +63,7 @@ public:\n>   \n>   #ifndef __DOXYGEN__\n>   \ttemplate<typename T, typename Func,\n> -\t\t typename std::enable_if_t<std::is_base_of<Object, T>::value> * = nullptr>\n> +\t\t std::enable_if_t<std::is_base_of<Object, T>::value> * = nullptr>\n>   \tvoid connect(T *obj, Func func, ConnectionType type = ConnectionTypeAuto)\n>   \t{\n>   \t\tObject *object = static_cast<Object *>(obj);\n> @@ -71,7 +71,7 @@ public:\n>   \t}\n>   \n>   \ttemplate<typename T, typename Func,\n> -\t\t typename std::enable_if_t<!std::is_base_of<Object, T>::value> * = nullptr>\n> +\t\t std::enable_if_t<!std::is_base_of<Object, T>::value> * = nullptr>\n>   #else\n>   \ttemplate<typename T, typename Func>\n>   #endif\n> diff --git a/include/libcamera/controls.h b/include/libcamera/controls.h\n> index 7920abbad2eb..b1b52acba0fd 100644\n> --- a/include/libcamera/controls.h\n> +++ b/include/libcamera/controls.h\n> @@ -99,10 +99,10 @@ public:\n>   \tControlValue();\n>   \n>   #ifndef __DOXYGEN__\n> -\ttemplate<typename T, typename std::enable_if_t<!details::is_span<T>::value &&\n> -\t\t\t\t\t\t       details::control_type<T>::value &&\n> -\t\t\t\t\t\t       !std::is_same<std::string, std::remove_cv_t<T>>::value,\n> -\t\t\t\t\t\t       std::nullptr_t> = nullptr>\n> +\ttemplate<typename T, std::enable_if_t<!details::is_span<T>::value &&\n> +\t\t\t\t\t      details::control_type<T>::value &&\n> +\t\t\t\t\t      !std::is_same<std::string, std::remove_cv_t<T>>::value,\n> +\t\t\t\t\t      std::nullptr_t> = nullptr>\n>   \tControlValue(const T &value)\n>   \t\t: type_(ControlTypeNone), numElements_(0)\n>   \t{\n> @@ -110,9 +110,9 @@ public:\n>   \t\t    &value, 1, sizeof(T));\n>   \t}\n>   \n> -\ttemplate<typename T, typename std::enable_if_t<details::is_span<T>::value ||\n> -\t\t\t\t\t\t       std::is_same<std::string, std::remove_cv_t<T>>::value,\n> -\t\t\t\t\t\t       std::nullptr_t> = nullptr>\n> +\ttemplate<typename T, std::enable_if_t<details::is_span<T>::value ||\n> +\t\t\t\t\t      std::is_same<std::string, std::remove_cv_t<T>>::value,\n> +\t\t\t\t\t      std::nullptr_t> = nullptr>\n>   #else\n>   \ttemplate<typename T>\n>   #endif\n> @@ -144,9 +144,9 @@ public:\n>   \t}\n>   \n>   #ifndef __DOXYGEN__\n> -\ttemplate<typename T, typename std::enable_if_t<!details::is_span<T>::value &&\n> -\t\t\t\t\t\t       !std::is_same<std::string, std::remove_cv_t<T>>::value,\n> -\t\t\t\t\t\t       std::nullptr_t> = nullptr>\n> +\ttemplate<typename T, std::enable_if_t<!details::is_span<T>::value &&\n> +\t\t\t\t\t      !std::is_same<std::string, std::remove_cv_t<T>>::value,\n> +\t\t\t\t\t      std::nullptr_t> = nullptr>\n>   \tT get() const\n>   \t{\n>   \t\tassert(type_ == details::control_type<std::remove_cv_t<T>>::value);\n> @@ -155,9 +155,9 @@ public:\n>   \t\treturn *reinterpret_cast<const T *>(data().data());\n>   \t}\n>   \n> -\ttemplate<typename T, typename std::enable_if_t<details::is_span<T>::value ||\n> -\t\t\t\t\t\t       std::is_same<std::string, std::remove_cv_t<T>>::value,\n> -\t\t\t\t\t\t       std::nullptr_t> = nullptr>\n> +\ttemplate<typename T, std::enable_if_t<details::is_span<T>::value ||\n> +\t\t\t\t\t      std::is_same<std::string, std::remove_cv_t<T>>::value,\n> +\t\t\t\t\t      std::nullptr_t> = nullptr>\n>   #else\n>   \ttemplate<typename T>\n>   #endif\n> @@ -172,18 +172,18 @@ public:\n>   \t}\n>   \n>   #ifndef __DOXYGEN__\n> -\ttemplate<typename T, typename std::enable_if_t<!details::is_span<T>::value &&\n> -\t\t\t\t\t\t       !std::is_same<std::string, std::remove_cv_t<T>>::value,\n> -\t\t\t\t\t\t       std::nullptr_t> = nullptr>\n> +\ttemplate<typename T, std::enable_if_t<!details::is_span<T>::value &&\n> +\t\t\t\t\t      !std::is_same<std::string, std::remove_cv_t<T>>::value,\n> +\t\t\t\t\t      std::nullptr_t> = nullptr>\n>   \tvoid set(const T &value)\n>   \t{\n>   \t\tset(details::control_type<std::remove_cv_t<T>>::value, false,\n>   \t\t    reinterpret_cast<const void *>(&value), 1, sizeof(T));\n>   \t}\n>   \n> -\ttemplate<typename T, typename std::enable_if_t<details::is_span<T>::value ||\n> -\t\t\t\t\t\t       std::is_same<std::string, std::remove_cv_t<T>>::value,\n> -\t\t\t\t\t\t       std::nullptr_t> = nullptr>\n> +\ttemplate<typename T, std::enable_if_t<details::is_span<T>::value ||\n> +\t\t\t\t\t      std::is_same<std::string, std::remove_cv_t<T>>::value,\n> +\t\t\t\t\t      std::nullptr_t> = nullptr>\n>   #else\n>   \ttemplate<typename T>\n>   #endif\n> diff --git a/include/libcamera/internal/ipa_data_serializer.h b/include/libcamera/internal/ipa_data_serializer.h\n> index a87449c9be48..30bdaebcd830 100644\n> --- a/include/libcamera/internal/ipa_data_serializer.h\n> +++ b/include/libcamera/internal/ipa_data_serializer.h\n> @@ -32,7 +32,7 @@ LOG_DECLARE_CATEGORY(IPADataSerializer)\n>   namespace {\n>   \n>   template<typename T,\n> -\t typename std::enable_if_t<std::is_arithmetic_v<T>> * = nullptr>\n> +\t std::enable_if_t<std::is_arithmetic_v<T>> * = nullptr>\n>   void appendPOD(std::vector<uint8_t> &vec, T val)\n>   {\n>   \tconstexpr size_t byteWidth = sizeof(val);\n> diff --git a/include/libcamera/internal/yaml_parser.h b/include/libcamera/internal/yaml_parser.h\n> index 78c359f749bf..5ba777d364fa 100644\n> --- a/include/libcamera/internal/yaml_parser.h\n> +++ b/include/libcamera/internal/yaml_parser.h\n> @@ -163,7 +163,7 @@ public:\n>   \n>   #ifndef __DOXYGEN__\n>   \ttemplate<typename T,\n> -\t\t typename std::enable_if_t<\n> +\t\t std::enable_if_t<\n>   \t\t\t std::is_same_v<bool, T> ||\n>   \t\t\t std::is_same_v<double, T> ||\n>   \t\t\t std::is_same_v<int16_t, T> ||\n> @@ -185,7 +185,7 @@ public:\n>   \n>   #ifndef __DOXYGEN__\n>   \ttemplate<typename T,\n> -\t\t typename std::enable_if_t<\n> +\t\t std::enable_if_t<\n>   \t\t\t std::is_same_v<bool, T> ||\n>   \t\t\t std::is_same_v<double, T> ||\n>   \t\t\t std::is_same_v<int16_t, T> ||\n> diff --git a/src/libcamera/yaml_parser.cpp b/src/libcamera/yaml_parser.cpp\n> index 440e35c47cab..84cb57d6de83 100644\n> --- a/src/libcamera/yaml_parser.cpp\n> +++ b/src/libcamera/yaml_parser.cpp\n> @@ -307,7 +307,7 @@ std::optional<Size> YamlObject::get() const\n>   #ifndef __DOXYGEN__\n>   \n>   template<typename T,\n> -\t typename std::enable_if_t<\n> +\t std::enable_if_t<\n>   \t\t std::is_same_v<bool, T> ||\n>   \t\t std::is_same_v<double, T> ||\n>   \t\t std::is_same_v<int16_t, T> ||\n>\n> base-commit: c13f86704b129636bb6d84f8b8ca37826ded3238","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 57FFCBE173\n\tfor <parsemail@patchwork.libcamera.org>;\n\tThu, 28 Jul 2022 11:58:35 +0000 (UTC)","from lancelot.ideasonboard.com (localhost [IPv6:::1])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTP id C9B6563312;\n\tThu, 28 Jul 2022 13:58:34 +0200 (CEST)","from perceval.ideasonboard.com (perceval.ideasonboard.com\n\t[213.167.242.64])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTPS id 7A9356330D\n\tfor <libcamera-devel@lists.libcamera.org>;\n\tThu, 28 Jul 2022 13:58:33 +0200 (CEST)","from [IPV6:2401:4900:1f3e:f7a:bc8f:12ed:b45f:c35d] (unknown\n\t[IPv6:2401:4900:1f3e:f7a:bc8f:12ed:b45f:c35d])\n\tby perceval.ideasonboard.com (Postfix) with ESMTPSA id 4CCC556D;\n\tThu, 28 Jul 2022 13:58:31 +0200 (CEST)"],"DKIM-Signature":["v=1; a=rsa-sha256; c=relaxed/simple; d=libcamera.org;\n\ts=mail; t=1659009514;\n\tbh=ZiPeJTRI0fM3ONOWH9Sw+8lgv7HdZvPn0J/hfgKQFdI=;\n\th=Date:To:References:In-Reply-To:Subject:List-Id:List-Unsubscribe:\n\tList-Archive:List-Post:List-Help:List-Subscribe:From:Reply-To:\n\tFrom;\n\tb=VGE+T+xB6fncyfDbhM49ueM5RaLk7wh47lf2dGPJavvBLB6qCAUtd83R20/XCUzXf\n\tWo5u7TifxTkVG9ngwmmjsMuBX3uDOo5jn+VKV8MeY59BNJdeVcPkiSB623guEXa1yc\n\tiXSCF1YRCJnY81q5PDBPowC7dW3PX9ql/QWQSpeW68l+JL1YUce24FFzhS04wwNHeZ\n\t4o6m8m7qcf4Acc+MFDw2Tk6+qCZUk6yCfDxey/RuKO7+WfiBVp3JC7lF6nT9GynfxG\n\tdIim6Z1vODqZPdolvm0Hh3E9NsR9Sjbq2pLd/NSFuQAQ+TZd4hzUuPVe1RVK7JQ4Fg\n\t/TnKubD3kqcYQ==","v=1; a=rsa-sha256; c=relaxed/simple; d=ideasonboard.com;\n\ts=mail; t=1659009513;\n\tbh=ZiPeJTRI0fM3ONOWH9Sw+8lgv7HdZvPn0J/hfgKQFdI=;\n\th=Date:Subject:To:References:From:In-Reply-To:From;\n\tb=UNUZ+i4YCSg3uIqLvSyil1Ven2kgR2ERrjOzK7GLuYKe8kcPX4OrI9EKfGcQ2oJhq\n\teoVkT/QKPk/gRRzQUInw4sJ7wk/YUA4aaVSTvQOuciaye3eKhaEKXl2Yx9Mb3/Gnv4\n\taF6hi3aQxiAG/DgINtByUZzeQWdz9tIHaDyfyfdI="],"Authentication-Results":"lancelot.ideasonboard.com; dkim=pass (1024-bit key; \n\tunprotected) header.d=ideasonboard.com\n\theader.i=@ideasonboard.com\n\theader.b=\"UNUZ+i4Y\"; dkim-atps=neutral","Message-ID":"<4f61a466-e3c0-4f3b-54a8-9c4c523da6a2@ideasonboard.com>","Date":"Thu, 28 Jul 2022 17:28:27 +0530","MIME-Version":"1.0","User-Agent":"Mozilla/5.0 (X11; Linux x86_64; rv:91.0) Gecko/20100101\n\tThunderbird/91.4.1","Content-Language":"en-US","To":"Laurent Pinchart <laurent.pinchart@ideasonboard.com>,\n\tlibcamera-devel@lists.libcamera.org","References":"<20220728111303.15241-1-laurent.pinchart@ideasonboard.com>","In-Reply-To":"<20220728111303.15241-1-laurent.pinchart@ideasonboard.com>","Content-Type":"text/plain; charset=UTF-8; format=flowed","Content-Transfer-Encoding":"7bit","Subject":"Re: [libcamera-devel] [PATCH] libcamera: Drop unnecessary typename\n\tkeyword used with std::enable_if_t","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>","From":"Umang Jain via libcamera-devel <libcamera-devel@lists.libcamera.org>","Reply-To":"Umang Jain <umang.jain@ideasonboard.com>","Errors-To":"libcamera-devel-bounces@lists.libcamera.org","Sender":"\"libcamera-devel\" <libcamera-devel-bounces@lists.libcamera.org>"}},{"id":24228,"web_url":"https://patchwork.libcamera.org/comment/24228/","msgid":"<20220728154108.3ywsb64xw7omxl7m@uno.localdomain>","date":"2022-07-28T15:41:08","subject":"Re: [libcamera-devel] [PATCH] libcamera: Drop unnecessary typename\n\tkeyword used with std::enable_if_t","submitter":{"id":3,"url":"https://patchwork.libcamera.org/api/people/3/","name":"Jacopo Mondi","email":"jacopo@jmondi.org"},"content":"Hi Laurent,\n\nOn Thu, Jul 28, 2022 at 02:13:03PM +0300, Laurent Pinchart via libcamera-devel wrote:\n> Usage of the std::enable_if_t type doesn't need to be prefixed by\n> typename. Drop the unnecessary keyword.\n>\n> Reported-by: Jacopo Mondi <jacopo@jmondi.org>\n> Signed-off-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>\n\nThanks, all occurrences seems addressed to me!\n\nReviewed-by: Jacopo Mondi <jacopo@jmondi.org>\n\nThanks\n   j\n\n> ---\n>  include/libcamera/base/bound_method.h         |  2 +-\n>  include/libcamera/base/flags.h                |  8 ++--\n>  include/libcamera/base/object.h               |  2 +-\n>  include/libcamera/base/signal.h               |  8 ++--\n>  include/libcamera/controls.h                  | 38 +++++++++----------\n>  .../libcamera/internal/ipa_data_serializer.h  |  2 +-\n>  include/libcamera/internal/yaml_parser.h      |  4 +-\n>  src/libcamera/yaml_parser.cpp                 |  2 +-\n>  8 files changed, 33 insertions(+), 33 deletions(-)\n>\n> diff --git a/include/libcamera/base/bound_method.h b/include/libcamera/base/bound_method.h\n> index e73a4d98ddae..c0275249f389 100644\n> --- a/include/libcamera/base/bound_method.h\n> +++ b/include/libcamera/base/bound_method.h\n> @@ -72,7 +72,7 @@ public:\n>  \t}\n>  \tvirtual ~BoundMethodBase() = default;\n>\n> -\ttemplate<typename T, typename std::enable_if_t<!std::is_same<Object, T>::value> * = nullptr>\n> +\ttemplate<typename T, std::enable_if_t<!std::is_same<Object, T>::value> * = nullptr>\n>  \tbool match(T *obj) { return obj == obj_; }\n>  \tbool match(Object *object) { return object == object_; }\n>\n> diff --git a/include/libcamera/base/flags.h b/include/libcamera/base/flags.h\n> index bff3b93c85a1..a1b404bdf23b 100644\n> --- a/include/libcamera/base/flags.h\n> +++ b/include/libcamera/base/flags.h\n> @@ -147,7 +147,7 @@ struct flags_enable_operators {\n>  };\n>\n>  template<typename E>\n> -typename std::enable_if_t<flags_enable_operators<E>::enable, Flags<E>>\n> +std::enable_if_t<flags_enable_operators<E>::enable, Flags<E>>\n>  operator|(E lhs, E rhs)\n>  {\n>  \tusing type = std::underlying_type_t<E>;\n> @@ -155,7 +155,7 @@ operator|(E lhs, E rhs)\n>  }\n>\n>  template<typename E>\n> -typename std::enable_if_t<flags_enable_operators<E>::enable, Flags<E>>\n> +std::enable_if_t<flags_enable_operators<E>::enable, Flags<E>>\n>  operator&(E lhs, E rhs)\n>  {\n>  \tusing type = std::underlying_type_t<E>;\n> @@ -163,7 +163,7 @@ operator&(E lhs, E rhs)\n>  }\n>\n>  template<typename E>\n> -typename std::enable_if_t<flags_enable_operators<E>::enable, Flags<E>>\n> +std::enable_if_t<flags_enable_operators<E>::enable, Flags<E>>\n>  operator^(E lhs, E rhs)\n>  {\n>  \tusing type = std::underlying_type_t<E>;\n> @@ -171,7 +171,7 @@ operator^(E lhs, E rhs)\n>  }\n>\n>  template<typename E>\n> -typename std::enable_if_t<flags_enable_operators<E>::enable, Flags<E>>\n> +std::enable_if_t<flags_enable_operators<E>::enable, Flags<E>>\n>  operator~(E rhs)\n>  {\n>  \tusing type = std::underlying_type_t<E>;\n> diff --git a/include/libcamera/base/object.h b/include/libcamera/base/object.h\n> index eef1a2c98ef9..933336361155 100644\n> --- a/include/libcamera/base/object.h\n> +++ b/include/libcamera/base/object.h\n> @@ -32,7 +32,7 @@ public:\n>  \tvoid postMessage(std::unique_ptr<Message> msg);\n>\n>  \ttemplate<typename T, typename R, typename... FuncArgs, typename... Args,\n> -\t\t typename std::enable_if_t<std::is_base_of<Object, T>::value> * = nullptr>\n> +\t\t std::enable_if_t<std::is_base_of<Object, T>::value> * = nullptr>\n>  \tR invokeMethod(R (T::*func)(FuncArgs...), ConnectionType type,\n>  \t\t       Args&&... args)\n>  \t{\n> diff --git a/include/libcamera/base/signal.h b/include/libcamera/base/signal.h\n> index 91000d0d6349..efb591bc5073 100644\n> --- a/include/libcamera/base/signal.h\n> +++ b/include/libcamera/base/signal.h\n> @@ -44,7 +44,7 @@ public:\n>  \t}\n>\n>  #ifndef __DOXYGEN__\n> -\ttemplate<typename T, typename R, typename std::enable_if_t<std::is_base_of<Object, T>::value> * = nullptr>\n> +\ttemplate<typename T, typename R, std::enable_if_t<std::is_base_of<Object, T>::value> * = nullptr>\n>  \tvoid connect(T *obj, R (T::*func)(Args...),\n>  \t\t     ConnectionType type = ConnectionTypeAuto)\n>  \t{\n> @@ -52,7 +52,7 @@ public:\n>  \t\tSignalBase::connect(new BoundMethodMember<T, R, Args...>(obj, object, func, type));\n>  \t}\n>\n> -\ttemplate<typename T, typename R, typename std::enable_if_t<!std::is_base_of<Object, T>::value> * = nullptr>\n> +\ttemplate<typename T, typename R, std::enable_if_t<!std::is_base_of<Object, T>::value> * = nullptr>\n>  #else\n>  \ttemplate<typename T, typename R>\n>  #endif\n> @@ -63,7 +63,7 @@ public:\n>\n>  #ifndef __DOXYGEN__\n>  \ttemplate<typename T, typename Func,\n> -\t\t typename std::enable_if_t<std::is_base_of<Object, T>::value> * = nullptr>\n> +\t\t std::enable_if_t<std::is_base_of<Object, T>::value> * = nullptr>\n>  \tvoid connect(T *obj, Func func, ConnectionType type = ConnectionTypeAuto)\n>  \t{\n>  \t\tObject *object = static_cast<Object *>(obj);\n> @@ -71,7 +71,7 @@ public:\n>  \t}\n>\n>  \ttemplate<typename T, typename Func,\n> -\t\t typename std::enable_if_t<!std::is_base_of<Object, T>::value> * = nullptr>\n> +\t\t std::enable_if_t<!std::is_base_of<Object, T>::value> * = nullptr>\n>  #else\n>  \ttemplate<typename T, typename Func>\n>  #endif\n> diff --git a/include/libcamera/controls.h b/include/libcamera/controls.h\n> index 7920abbad2eb..b1b52acba0fd 100644\n> --- a/include/libcamera/controls.h\n> +++ b/include/libcamera/controls.h\n> @@ -99,10 +99,10 @@ public:\n>  \tControlValue();\n>\n>  #ifndef __DOXYGEN__\n> -\ttemplate<typename T, typename std::enable_if_t<!details::is_span<T>::value &&\n> -\t\t\t\t\t\t       details::control_type<T>::value &&\n> -\t\t\t\t\t\t       !std::is_same<std::string, std::remove_cv_t<T>>::value,\n> -\t\t\t\t\t\t       std::nullptr_t> = nullptr>\n> +\ttemplate<typename T, std::enable_if_t<!details::is_span<T>::value &&\n> +\t\t\t\t\t      details::control_type<T>::value &&\n> +\t\t\t\t\t      !std::is_same<std::string, std::remove_cv_t<T>>::value,\n> +\t\t\t\t\t      std::nullptr_t> = nullptr>\n>  \tControlValue(const T &value)\n>  \t\t: type_(ControlTypeNone), numElements_(0)\n>  \t{\n> @@ -110,9 +110,9 @@ public:\n>  \t\t    &value, 1, sizeof(T));\n>  \t}\n>\n> -\ttemplate<typename T, typename std::enable_if_t<details::is_span<T>::value ||\n> -\t\t\t\t\t\t       std::is_same<std::string, std::remove_cv_t<T>>::value,\n> -\t\t\t\t\t\t       std::nullptr_t> = nullptr>\n> +\ttemplate<typename T, std::enable_if_t<details::is_span<T>::value ||\n> +\t\t\t\t\t      std::is_same<std::string, std::remove_cv_t<T>>::value,\n> +\t\t\t\t\t      std::nullptr_t> = nullptr>\n>  #else\n>  \ttemplate<typename T>\n>  #endif\n> @@ -144,9 +144,9 @@ public:\n>  \t}\n>\n>  #ifndef __DOXYGEN__\n> -\ttemplate<typename T, typename std::enable_if_t<!details::is_span<T>::value &&\n> -\t\t\t\t\t\t       !std::is_same<std::string, std::remove_cv_t<T>>::value,\n> -\t\t\t\t\t\t       std::nullptr_t> = nullptr>\n> +\ttemplate<typename T, std::enable_if_t<!details::is_span<T>::value &&\n> +\t\t\t\t\t      !std::is_same<std::string, std::remove_cv_t<T>>::value,\n> +\t\t\t\t\t      std::nullptr_t> = nullptr>\n>  \tT get() const\n>  \t{\n>  \t\tassert(type_ == details::control_type<std::remove_cv_t<T>>::value);\n> @@ -155,9 +155,9 @@ public:\n>  \t\treturn *reinterpret_cast<const T *>(data().data());\n>  \t}\n>\n> -\ttemplate<typename T, typename std::enable_if_t<details::is_span<T>::value ||\n> -\t\t\t\t\t\t       std::is_same<std::string, std::remove_cv_t<T>>::value,\n> -\t\t\t\t\t\t       std::nullptr_t> = nullptr>\n> +\ttemplate<typename T, std::enable_if_t<details::is_span<T>::value ||\n> +\t\t\t\t\t      std::is_same<std::string, std::remove_cv_t<T>>::value,\n> +\t\t\t\t\t      std::nullptr_t> = nullptr>\n>  #else\n>  \ttemplate<typename T>\n>  #endif\n> @@ -172,18 +172,18 @@ public:\n>  \t}\n>\n>  #ifndef __DOXYGEN__\n> -\ttemplate<typename T, typename std::enable_if_t<!details::is_span<T>::value &&\n> -\t\t\t\t\t\t       !std::is_same<std::string, std::remove_cv_t<T>>::value,\n> -\t\t\t\t\t\t       std::nullptr_t> = nullptr>\n> +\ttemplate<typename T, std::enable_if_t<!details::is_span<T>::value &&\n> +\t\t\t\t\t      !std::is_same<std::string, std::remove_cv_t<T>>::value,\n> +\t\t\t\t\t      std::nullptr_t> = nullptr>\n>  \tvoid set(const T &value)\n>  \t{\n>  \t\tset(details::control_type<std::remove_cv_t<T>>::value, false,\n>  \t\t    reinterpret_cast<const void *>(&value), 1, sizeof(T));\n>  \t}\n>\n> -\ttemplate<typename T, typename std::enable_if_t<details::is_span<T>::value ||\n> -\t\t\t\t\t\t       std::is_same<std::string, std::remove_cv_t<T>>::value,\n> -\t\t\t\t\t\t       std::nullptr_t> = nullptr>\n> +\ttemplate<typename T, std::enable_if_t<details::is_span<T>::value ||\n> +\t\t\t\t\t      std::is_same<std::string, std::remove_cv_t<T>>::value,\n> +\t\t\t\t\t      std::nullptr_t> = nullptr>\n>  #else\n>  \ttemplate<typename T>\n>  #endif\n> diff --git a/include/libcamera/internal/ipa_data_serializer.h b/include/libcamera/internal/ipa_data_serializer.h\n> index a87449c9be48..30bdaebcd830 100644\n> --- a/include/libcamera/internal/ipa_data_serializer.h\n> +++ b/include/libcamera/internal/ipa_data_serializer.h\n> @@ -32,7 +32,7 @@ LOG_DECLARE_CATEGORY(IPADataSerializer)\n>  namespace {\n>\n>  template<typename T,\n> -\t typename std::enable_if_t<std::is_arithmetic_v<T>> * = nullptr>\n> +\t std::enable_if_t<std::is_arithmetic_v<T>> * = nullptr>\n>  void appendPOD(std::vector<uint8_t> &vec, T val)\n>  {\n>  \tconstexpr size_t byteWidth = sizeof(val);\n> diff --git a/include/libcamera/internal/yaml_parser.h b/include/libcamera/internal/yaml_parser.h\n> index 78c359f749bf..5ba777d364fa 100644\n> --- a/include/libcamera/internal/yaml_parser.h\n> +++ b/include/libcamera/internal/yaml_parser.h\n> @@ -163,7 +163,7 @@ public:\n>\n>  #ifndef __DOXYGEN__\n>  \ttemplate<typename T,\n> -\t\t typename std::enable_if_t<\n> +\t\t std::enable_if_t<\n>  \t\t\t std::is_same_v<bool, T> ||\n>  \t\t\t std::is_same_v<double, T> ||\n>  \t\t\t std::is_same_v<int16_t, T> ||\n> @@ -185,7 +185,7 @@ public:\n>\n>  #ifndef __DOXYGEN__\n>  \ttemplate<typename T,\n> -\t\t typename std::enable_if_t<\n> +\t\t std::enable_if_t<\n>  \t\t\t std::is_same_v<bool, T> ||\n>  \t\t\t std::is_same_v<double, T> ||\n>  \t\t\t std::is_same_v<int16_t, T> ||\n> diff --git a/src/libcamera/yaml_parser.cpp b/src/libcamera/yaml_parser.cpp\n> index 440e35c47cab..84cb57d6de83 100644\n> --- a/src/libcamera/yaml_parser.cpp\n> +++ b/src/libcamera/yaml_parser.cpp\n> @@ -307,7 +307,7 @@ std::optional<Size> YamlObject::get() const\n>  #ifndef __DOXYGEN__\n>\n>  template<typename T,\n> -\t typename std::enable_if_t<\n> +\t std::enable_if_t<\n>  \t\t std::is_same_v<bool, T> ||\n>  \t\t std::is_same_v<double, T> ||\n>  \t\t std::is_same_v<int16_t, T> ||\n>\n> base-commit: c13f86704b129636bb6d84f8b8ca37826ded3238\n> --\n> Regards,\n>\n> Laurent Pinchart\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 AABE9C3275\n\tfor <parsemail@patchwork.libcamera.org>;\n\tThu, 28 Jul 2022 15:41:13 +0000 (UTC)","from lancelot.ideasonboard.com (localhost [IPv6:::1])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTP id 24B116330E;\n\tThu, 28 Jul 2022 17:41:13 +0200 (CEST)","from relay9-d.mail.gandi.net (relay9-d.mail.gandi.net\n\t[IPv6:2001:4b98:dc4:8::229])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTPS id E86CA6330D\n\tfor <libcamera-devel@lists.libcamera.org>;\n\tThu, 28 Jul 2022 17:41:10 +0200 (CEST)","(Authenticated sender: jacopo@jmondi.org)\n\tby mail.gandi.net (Postfix) with ESMTPSA id 25AC9FF80A;\n\tThu, 28 Jul 2022 15:41:09 +0000 (UTC)"],"DKIM-Signature":"v=1; a=rsa-sha256; c=relaxed/simple; d=libcamera.org;\n\ts=mail; t=1659022873;\n\tbh=p6PTsbxjIIc10FOPAeBpCrCIG9Qyv++y1EuzDZnwNAQ=;\n\th=Date:To:References:In-Reply-To:Subject:List-Id:List-Unsubscribe:\n\tList-Archive:List-Post:List-Help:List-Subscribe:From:Reply-To:Cc:\n\tFrom;\n\tb=h+ZEkb5rWNvICmrZAA7xCcO/CBhxYn2wX3940ULy9yWZ+P7a1eO4OAUxvRAt9fvoe\n\tIzjlSjEDs30+kxNimFe3PgnoXDPBYhFj7JmOesZQWZPtgsSfUi9NU7wuhPxirnw/GA\n\tOmZBFB4accN5N9ZkRJXsU4jHEdRb1G6bqTcoQv/TQ/NHBDMtr7H3my1a7RTI0ObUzQ\n\t2RzyIY7f6sRyQ8C+LpZyhGAid9rnWF4VdMtrPgeTR8iZKtBQ0ZQHhXQZbrGVBMHuEK\n\ttj3wFNj/5xidCu1tk3SinMCZJHdw8145Cz2ldTUUxWxa1jtUavzQHkdYS8bv1ljXfI\n\tZeMsgppwPq4xA==","Date":"Thu, 28 Jul 2022 17:41:08 +0200","To":"Laurent Pinchart <laurent.pinchart@ideasonboard.com>","Message-ID":"<20220728154108.3ywsb64xw7omxl7m@uno.localdomain>","References":"<20220728111303.15241-1-laurent.pinchart@ideasonboard.com>","MIME-Version":"1.0","Content-Type":"text/plain; charset=utf-8","Content-Disposition":"inline","In-Reply-To":"<20220728111303.15241-1-laurent.pinchart@ideasonboard.com>","Subject":"Re: [libcamera-devel] [PATCH] libcamera: Drop unnecessary typename\n\tkeyword used with std::enable_if_t","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>","From":"Jacopo Mondi via libcamera-devel <libcamera-devel@lists.libcamera.org>","Reply-To":"Jacopo Mondi <jacopo@jmondi.org>","Cc":"libcamera-devel@lists.libcamera.org","Errors-To":"libcamera-devel-bounces@lists.libcamera.org","Sender":"\"libcamera-devel\" <libcamera-devel-bounces@lists.libcamera.org>"}}]