Skip to content

Commit 0ef77ea

Browse files
author
Stefano Avallone
committed
core: Add a static assert to prevent misuse of Create<>() function
1 parent 8adca5d commit 0ef77ea

File tree

1 file changed

+5
-0
lines changed

1 file changed

+5
-0
lines changed

src/core/model/ptr.h

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,7 @@
1313

1414
#include <iostream>
1515
#include <stdint.h>
16+
#include <type_traits>
1617

1718
/**
1819
* @file
@@ -427,6 +428,8 @@ struct EventMemberImplObjTraits<Ptr<T>>
427428
namespace ns3
428429
{
429430

431+
class Object;
432+
430433
/*************************************************
431434
* friend non-member function implementations
432435
************************************************/
@@ -435,6 +438,8 @@ template <typename T, typename... Ts>
435438
Ptr<T>
436439
Create(Ts&&... args)
437440
{
441+
static_assert(!std::is_base_of_v<Object, T>,
442+
"Use CreateObject() instead of Create() for Object subclasses");
438443
return Ptr<T>(new T(std::forward<Ts>(args)...), false);
439444
}
440445

0 commit comments

Comments
 (0)