Usermode/libc++ - Implement map::insert and map::erase
[tpg/acess2.git] / Usermode / Libraries / libc++.so_src / include_exp / utility
index 6f05744..b3e40c5 100644 (file)
@@ -8,6 +8,9 @@
 #ifndef _LIBCXX_UTILITY_
 #define _LIBCXX_UTILITY_
 
+#include "_libcxx_helpers.h"
+#include "type_traits"
+
 namespace std {
 
 template <class T1, class T2>
@@ -34,7 +37,21 @@ public:
                second(b)
        {
        }
+       pair(const pair& pr):
+               first(pr.first),
+               second(pr.second)
+       {
+       }
+       pair(pair&& pr):
+               first(pr.first), second(pr.second)
+       {
+       }
        // operator = is implicit
+       pair& operator=(const pair& x) {
+               first  = x.first;
+               second = x.second;
+               return *this;
+       }
 };
 
 template <class T1, class T2>  
@@ -46,6 +63,26 @@ bool operator!= (const pair<T1,T2>& lhs, const pair<T1,T2>& rhs) {
        return !(lhs == rhs);
 }
 
+#if _CXX11_AVAIL
+template <class T>
+T&& forward(typename remove_reference<T>::type& arg) noexcept {
+       return static_cast<decltype(arg)&&>(arg);
+}
+template <class T>
+T&& forward(typename remove_reference<T>::type&& arg) noexcept {
+       return static_cast<decltype(arg)&&>(arg);
+}
+
+template <class T>
+typename remove_reference<T>::type&& move( T&& t) noexcept {
+       return static_cast<typename remove_reference<T>::type&&>(t);
+}
+//template <class T>
+//constexpr typename ::std::remove_reference<T>::type&& move( T&& t) noexcept {
+//     return static_cast<typename ::std::remove_reference<T>::type&&>(t);
+//}
+#endif
+
 };     // namespace std
 
 #endif

UCC git Repository :: git.ucc.asn.au