[libcamera-devel] [PATCH] libcamera: signal: Fix compilation on gcc
Laurent Pinchart
laurent.pinchart at ideasonboard.com
Thu Jul 11 21:12:35 CEST 2019
gcc complains that the recently template specialisation of the
SlotBase::match() method is invalid as it is in a non-namespace scope.
Luckily this can easily be fixed by removing the specialisation for the
fully specialised implementation. As an additional safety measure, using
std::enable_if<!std::is_same<Object, T>> on the template implementation
ensures that it will never be called for an Object instance.
Fixes: 56c2e653008a ("libcamera: signal: Fix Object handling in multiple inheritance cases")
Signed-off-by: Laurent Pinchart <laurent.pinchart at ideasonboard.com>
---
include/libcamera/signal.h | 3 +--
1 file changed, 1 insertion(+), 2 deletions(-)
diff --git a/include/libcamera/signal.h b/include/libcamera/signal.h
index d3be362637f8..8f6db700cd80 100644
--- a/include/libcamera/signal.h
+++ b/include/libcamera/signal.h
@@ -27,9 +27,8 @@ public:
: obj_(obj), object_(object) {}
virtual ~SlotBase() {}
- template<typename T>
+ template<typename T, typename std::enable_if<!std::is_same<Object, T>::value>::type * = nullptr>
bool match(T *obj) { return obj == obj_; }
- template<>
bool match(Object *object) { return object == object_; }
void disconnect(SignalBase *signal);
--
Regards,
Laurent Pinchart
More information about the libcamera-devel
mailing list