3 回答

TA貢獻(xiàn)1824條經(jīng)驗 獲得超6個贊
make_unique
#include <memory>#include <type_traits>#include <utility>template <typename T, typename... Args>std: :unique_ptr<T> make_unique_helper(std::false_type, Args&&... args) { return std::unique_ptr<T>(new T(std::forward<Args>(args)...));}template <typename T, typename... Args>std: :unique_ptr<T> make_unique_helper(std::true_type, Args&&... args) { static_assert(std::extent<T>::value == 0, "make_unique<T[N]>() is forbidden, please use make_unique<T[]>()."); typedef typename std::remove_extent<T>::type U; return std::unique_ptr<T>(new U[sizeof...(Args)]{std::forward<Args>(args)...});}template <typename T, typename... Args>std::unique_ptr<T> make_unique(Args&&... args) { return make_unique_helper<T>(std::is_array<T>(), std::forward<Args>(args)...);}

TA貢獻(xiàn)1847條經(jīng)驗 獲得超7個贊
std::make_shared
std::shared_ptr<Type> ptr(new Type(...));
std::shared_ptr
std::make_shared
std::make_shared
std::shared_ptr<Type> ptr = new Type(...);
new
std::shared_ptr
std::make_shared<Type>(...)
std::shared_ptr
std::make_unique
- 3 回答
- 0 關(guān)注
- 406 瀏覽
添加回答
舉報