/*************************** @Author: MirrorYuChen @Contact: 2458006366@qq.com @File: UMemory.h @Time: 2022/10/11 01:43 上午 @Desc: ***************************/ #ifndef CGRAPH_UMEMORY_H #define CGRAPH_UMEMORY_H #include #include #include "../CBasic/CBasicInclude.h" CGRAPH_NAMESPACE_BEGIN template using enable_if_t = typename std::enable_if::type; template struct MakeUniqueResult { using scalar = std::unique_ptr; }; template struct MakeUniqueResult { using array = std::unique_ptr; }; template struct MakeUniqueResult { using invalid = void; }; template typename MakeUniqueResult::scalar make_unique( Args &&... args) { return std::unique_ptr(new T(std::forward(args)...)); } template typename MakeUniqueResult::array make_unique(size_t n) { return std::unique_ptr(new typename std::remove_extent[n]()); } template typename MakeUniqueResult::invalid make_unique( Args &&... /* args */) = delete; CGRAPH_NAMESPACE_END #endif // CGRAPH_UMEMORY_H