28 #ifndef YB_INC_ystdex_memory_hpp_
29 #define YB_INC_ystdex_memory_hpp_ 1
45 template<
typename _tIterator>
51 template<
typename _type>
65 template<
typename _type>
71 template<
typename _type>
73 raw(
const std::unique_ptr<_type>& p)
ynothrow -> decltype(p.get())
77 template<
typename _type>
83 template<
typename _type>
87 return p.lock().get();
97 template<
typename _type>
108 template<
typename _type>
134 template<
typename _type,
typename _pSrc>
138 static_assert(is_pointer<_pSrc>::value,
"Invalid type found.");
140 return std::unique_ptr<_type>(p);
146 template<
typename _type,
typename _pSrc>
150 static_assert(is_pointer<_pSrc>::value,
"Invalid type found.");
152 return std::unique_ptr<_type>(p);
154 template<
typename _type>
158 return std::unique_ptr<_type>(p);
164 template<
typename _type>
168 return std::unique_ptr<_type>();
185 template<
typename _type,
typename _pSrc>
189 static_assert(is_pointer<_pSrc>::value,
"Invalid type found.");
191 return std::shared_ptr<_type>(p);
197 template<
typename _type,
typename _pSrc>
201 static_assert(is_pointer<_pSrc>::value,
"Invalid type found.");
203 return std::shared_ptr<_type>(p);
205 template<
typename _type>
209 return std::shared_ptr<_type>(p);
215 template<
typename _type>
219 return std::shared_ptr<_type>();
232 template<
typename _type,
typename... _tParams>
236 return std::unique_ptr<_type>(
new _type(
yforward(args)...));
247 template<
typename _type,
typename... _tParams>
251 return std::shared_ptr<_type>(
new _type(
yforward(args)...));