diff --git a/Lib/c/std_shared_ptr.i b/Lib/c/std_shared_ptr.i index a82a49c45..d2049f5f9 100644 --- a/Lib/c/std_shared_ptr.i +++ b/Lib/c/std_shared_ptr.i @@ -67,6 +67,18 @@ explicit operator bool() const { return swig_self_ != nullptr; } %} +// This is required to handle overloads on shared_ptr/normal type correctly. +%typemap(typecheck, precedence=SWIG_TYPECHECK_POINTER, equivalent="TYPE *") + TYPE CONST, + TYPE CONST &, + TYPE CONST *, + TYPE *CONST&, + SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< CONST TYPE >, + SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< CONST TYPE > &, + SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< CONST TYPE > *, + SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< CONST TYPE > *& + "" + %enddef %include