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);
