Compare commits
No commits in common. "9dfb6e4740211796745014f8d0d97368544d553f" and "eaad6ba6e0a175cfa9f930bf459cdd69d41756d3" have entirely different histories.
9dfb6e4740
...
eaad6ba6e0
@ -96,7 +96,7 @@ public:
|
||||
}
|
||||
};
|
||||
|
||||
#define rcp_managed_root(classname) \
|
||||
#define rcp_root() \
|
||||
public: \
|
||||
void rcp_inc() const \
|
||||
{ \
|
||||
@ -110,18 +110,15 @@ public:
|
||||
} \
|
||||
} \
|
||||
private: \
|
||||
mutable std::atomic<int> ref_count{0}; \
|
||||
rcp_managed(classname)
|
||||
mutable std::atomic<int> ref_count{0}
|
||||
|
||||
#define rcp_managed(classname) \
|
||||
public: \
|
||||
rcp<classname> get_rcp() \
|
||||
{ \
|
||||
return rcp<classname>(this); \
|
||||
} \
|
||||
template <typename... Args> \
|
||||
static rcp<classname> create(Args&&... args) \
|
||||
{ \
|
||||
return (new classname(std::forward<Args>(args)...))->get_rcp(); \
|
||||
} \
|
||||
private:
|
||||
rcp<classname> get_rcp() \
|
||||
{ \
|
||||
return rcp<classname>(this); \
|
||||
} \
|
||||
template <typename... Args> \
|
||||
static rcp<classname> create(Args&&... args) \
|
||||
{ \
|
||||
return (new classname(std::forward<Args>(args)...))->get_rcp(); \
|
||||
}
|
||||
|
||||
@ -8,7 +8,7 @@ static int myderived_destruct;
|
||||
|
||||
class MyBase
|
||||
{
|
||||
rcp_managed_root(MyBase);
|
||||
rcp_root();
|
||||
|
||||
protected:
|
||||
MyBase(int x, int y)
|
||||
@ -20,12 +20,13 @@ protected:
|
||||
{
|
||||
mybase_destruct++;
|
||||
}
|
||||
|
||||
public:
|
||||
rcp_managed(MyBase);
|
||||
};
|
||||
|
||||
class MyDerived : public MyBase
|
||||
{
|
||||
rcp_managed(MyDerived);
|
||||
|
||||
protected:
|
||||
MyDerived(double v) : MyBase(1, 2)
|
||||
{
|
||||
@ -36,6 +37,9 @@ protected:
|
||||
{
|
||||
myderived_destruct++;
|
||||
}
|
||||
|
||||
public:
|
||||
rcp_managed(MyDerived)
|
||||
};
|
||||
|
||||
void t1()
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user