From 95dea4020f4446d70be31ede34686d87b500e4c9 Mon Sep 17 00:00:00 2001 From: Antonio SJ Musumeci Date: Sun, 4 Feb 2024 00:29:55 -0600 Subject: [PATCH] func_create_ff.cpp --- src/make_unique.hpp | 41 +++++++++++++++++++++++++++++++++++++++++ 1 file changed, 41 insertions(+) create mode 100644 src/make_unique.hpp diff --git a/src/make_unique.hpp b/src/make_unique.hpp new file mode 100644 index 00000000..98260bca --- /dev/null +++ b/src/make_unique.hpp @@ -0,0 +1,41 @@ +#include +#include +#include +#include + +namespace std +{ + template struct _Unique_if + { + typedef unique_ptr _Single_object; + }; + + template struct _Unique_if + { + typedef unique_ptr _Unknown_bound; + }; + + template struct _Unique_if + { + typedef void _Known_bound; + }; + + template + typename _Unique_if::_Single_object + make_unique(Args&&... args) + { + return unique_ptr(new T(std::forward(args)...)); + } + + template + typename _Unique_if::_Unknown_bound + make_unique(size_t n) + { + typedef typename remove_extent::type U; + return unique_ptr(new U[n]()); + } + + template + typename _Unique_if::_Known_bound + make_unique(Args&&...) = delete; +}