diff options
author | Laurent Pinchart <laurent.pinchart@ideasonboard.com> | 2019-07-11 22:08:34 +0300 |
---|---|---|
committer | Laurent Pinchart <laurent.pinchart@ideasonboard.com> | 2019-07-11 22:14:19 +0300 |
commit | b50c5f28b14e2fb14d4de0c088949e1405d22c6a (patch) | |
tree | cf717c3f8ab0a7e275c024f14671dc3bf105d2c9 | |
parent | 56c2e653008a5447eafc7509e6e2957470853495 (diff) |
libcamera: signal: Fix compilation on gcc
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@ideasonboard.com>
Reviewed-by: Niklas Söderlund <niklas.soderlund@ragnatech.se>
-rw-r--r-- | include/libcamera/signal.h | 3 |
1 files changed, 1 insertions, 2 deletions
diff --git a/include/libcamera/signal.h b/include/libcamera/signal.h index d3be3626..8f6db700 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); |