11 template <
typename SharedPtr,
typename... Args>
16 using type =
typename SharedPtr::element_type;
17 return std::make_shared<type>(std::forward<Args>(args)...);
24 static std::map<const void*, int> addresses;
25 auto p = addresses.emplace(t, 0);
27 p.first->second = addresses.size();
28 return p.first->second;
SharedPtr make_shared_ptr(Args &&...args)
Same as std::make_shared, but parameterized by the shared_ptr type, not the (pointed to) element_type...
int address(const void *t)
Name pointers, to make them easier to read.