namespace Chao::CSD { template void RCPtr::Attach(T* in_pObject) { RCPtrAbs::AttachAbs(in_pObject); } template T* RCPtr::Get() const { return static_cast(RCPtrAbs::GetAbs()); } template void RCPtr::Set(const RCPtr& in_rOther) { RCPtrAbs::SetAbs(in_rOther); } template T* RCPtr::operator*() const { return Get(); } template T* RCPtr::operator->() const { return Get(); } template RCPtr& RCPtr::operator=(const RCPtr& in_rOther) { Set(in_rOther); return *this; } template RCPtr::operator bool() const { return m_pObject != nullptr; } }