If you use clang19 or gcc14, it fails. clang18 succeeds.
What are you talking about exactly ?
Can you share the error ?
What is the distro you are using ?
It spit out several error messages like this one
/var/tmp/portage/kde-apps/step-24.12.2/work/step-24.12.2/stepcore/object.h:252:45: error: a template argument list is expecte
d after a name prefixed by the template keyword [-Wmissing-template-arg-list-after-template-kw]
252 | if(!src || !src->metaObject()->template inherits(_Dst())) return NULL;
| ^
And by applying such a patch, I was able to compile it with Clang 19.
diff -uprN a/stepcore/object.h b/stepcore/object.h
--- a/stepcore/object.h 2025-02-15 22:17:29.281326608 +0900
+++ b/stepcore/object.h 2025-02-15 22:20:02.407333617 +0900
@@ -249,7 +249,7 @@ public:
/** Casts between pointers to Object */
template<class _Dst, class _Src> // XXX: implement it better
_Dst stepcore_cast(_Src src) {
- if(!src || !src->metaObject()->template inherits(_Dst())) return NULL;
+ if(!src || !src->metaObject()->template inherits<_Dst>()) return NULL;
return static_cast<_Dst>(src);
}
I used a distro called Gentoo.
This is well known.
That’s ironic this function could be replaced with qobject_cast
.