diff --git a/Userland/Libraries/LibCore/Object.h b/Userland/Libraries/LibCore/Object.h index d9d0a2df2a..1cfa64683b 100644 --- a/Userland/Libraries/LibCore/Object.h +++ b/Userland/Libraries/LibCore/Object.h @@ -59,10 +59,13 @@ enum class TimerShouldFireWhenNotVisible { #define C_OBJECT(klass) \ public: \ virtual const char* class_name() const override { return #klass; } \ - template \ + template \ static inline NonnullRefPtr construct(Args&&... args) \ { \ - return adopt_ref(*new klass(forward(args)...)); \ + auto obj = adopt_ref(*new Klass(forward(args)...)); \ + if constexpr (requires { declval().did_construct(); }) \ + obj->did_construct(); \ + return obj; \ } #define C_OBJECT_ABSTRACT(klass) \