| 223 | */ |
| 224 | template <typename... Args> |
| 225 | inline static ThreadlocalSharedPtr<T> Create(Args&&... args) { |
| 226 | ThreadlocalAllocator<RefBlock> arena; |
| 227 | ThreadlocalSharedPtr<T> p; |
| 228 | p.block_ = arena.allocate(1); |
| 229 | p.block_->use_count_ = 1; |
| 230 | new (&(p.block_->data)) T(std::forward<Args>(args)...); |
| 231 | return p; |
| 232 | } |
| 233 | |
| 234 | private: |
| 235 | // internal reference block |