From 4cd4e4cdc6764067f183834352303b60a4645125 Mon Sep 17 00:00:00 2001 From: Alex Date: Thu, 23 Mar 2023 01:48:58 +0200 Subject: [PATCH] Add smart pointers to std --- include/std.hpp | 72 +++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 72 insertions(+) diff --git a/include/std.hpp b/include/std.hpp index 56751f1..5f150cb 100644 --- a/include/std.hpp +++ b/include/std.hpp @@ -2,6 +2,7 @@ #define __FENNIX_KERNEL_STD_H__ #include +#include #include #include @@ -16,6 +17,77 @@ namespace std { }; + template + class smart_ptr + { + public: + using SmartPointer::SmartPointer; + using SmartPointer::operator*; + using SmartPointer::operator->; + }; + + template + class auto_ptr + { + public: + using AutoPointer::AutoPointer; + }; + + template + class unique_ptr + { + public: + using UniquePointer::UniquePointer; + }; + + template + class weak_ptr + { + public: + using WeakPointer::WeakPointer; + }; + + template + class shared_ptr + { + using SharedPointer::SharedPointer; + using SharedPointer::operator*; + using SharedPointer::operator->; + }; + + template + struct remove_reference + { + typedef T type; + }; + + template + struct remove_reference + { + typedef T type; + }; + + template + struct remove_reference + { + typedef T type; + }; + + template + using remove_reference_t = typename remove_reference::type; + + template + T &&forward(remove_reference_t &t) { return static_cast(t); }; + + template + T &&forward(remove_reference_t &&t) { return static_cast(t); }; + + template + shared_ptr make_shared(Args &&...args) + { + return SharedPointer(new T(forward(args)...)); + }; + template class vector : public Vector {