From 0ef77eab92b078d6815664eae93d59b63e772364 Mon Sep 17 00:00:00 2001 From: Stefano Avallone Date: Wed, 11 Jun 2025 20:24:19 +0200 Subject: [PATCH] core: Add a static assert to prevent misuse of Create<>() function --- src/core/model/ptr.h | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/src/core/model/ptr.h b/src/core/model/ptr.h index a66484dd5..bfe871ee1 100644 --- a/src/core/model/ptr.h +++ b/src/core/model/ptr.h @@ -13,6 +13,7 @@ #include #include +#include /** * @file @@ -427,6 +428,8 @@ struct EventMemberImplObjTraits> namespace ns3 { +class Object; + /************************************************* * friend non-member function implementations ************************************************/ @@ -435,6 +438,8 @@ template Ptr Create(Ts&&... args) { + static_assert(!std::is_base_of_v, + "Use CreateObject() instead of Create() for Object subclasses"); return Ptr(new T(std::forward(args)...), false); }