Compare commits

..

No commits in common. "9dfb6e4740211796745014f8d0d97368544d553f" and "eaad6ba6e0a175cfa9f930bf459cdd69d41756d3" have entirely different histories.

2 changed files with 18 additions and 17 deletions

View File

@ -96,7 +96,7 @@ public:
} }
}; };
#define rcp_managed_root(classname) \ #define rcp_root() \
public: \ public: \
void rcp_inc() const \ void rcp_inc() const \
{ \ { \
@ -110,11 +110,9 @@ public:
} \ } \
} \ } \
private: \ private: \
mutable std::atomic<int> ref_count{0}; \ mutable std::atomic<int> ref_count{0}
rcp_managed(classname)
#define rcp_managed(classname) \ #define rcp_managed(classname) \
public: \
rcp<classname> get_rcp() \ rcp<classname> get_rcp() \
{ \ { \
return rcp<classname>(this); \ return rcp<classname>(this); \
@ -123,5 +121,4 @@ public:
static rcp<classname> create(Args&&... args) \ static rcp<classname> create(Args&&... args) \
{ \ { \
return (new classname(std::forward<Args>(args)...))->get_rcp(); \ return (new classname(std::forward<Args>(args)...))->get_rcp(); \
} \ }
private:

View File

@ -8,7 +8,7 @@ static int myderived_destruct;
class MyBase class MyBase
{ {
rcp_managed_root(MyBase); rcp_root();
protected: protected:
MyBase(int x, int y) MyBase(int x, int y)
@ -20,12 +20,13 @@ protected:
{ {
mybase_destruct++; mybase_destruct++;
} }
public:
rcp_managed(MyBase);
}; };
class MyDerived : public MyBase class MyDerived : public MyBase
{ {
rcp_managed(MyDerived);
protected: protected:
MyDerived(double v) : MyBase(1, 2) MyDerived(double v) : MyBase(1, 2)
{ {
@ -36,6 +37,9 @@ protected:
{ {
myderived_destruct++; myderived_destruct++;
} }
public:
rcp_managed(MyDerived)
}; };
void t1() void t1()