1 | #ifndef _SIM_STL_PAIR |
2 | #define _SIM_STL_PAIR |
3 | |
4 | #pragma clang system_header |
5 | |
6 | #include "sim_type_traits" |
7 | |
8 | namespace std { |
9 | |
10 | template <class T1, class T2> |
11 | struct pair { |
12 | T1 first; |
13 | T2 second; |
14 | |
15 | pair() : first(), second() {} |
16 | pair(const T1 &a, const T2 &b) : first(a), second(b) {} |
17 | |
18 | template<class U1, class U2> |
19 | pair(const pair<U1, U2> &other) : first(other.first), |
20 | second(other.second) {} |
21 | }; |
22 | |
23 | template <typename T1, typename T2> |
24 | pair<typename remove_reference<T1>::type, typename remove_reference<T2>::type> |
25 | make_pair(T1 &&, T2 &&) { |
26 | return {}; |
27 | }; |
28 | |
29 | } // namespace std |
30 | |
31 | #endif // _SIM_STL_PAIR |
32 | |
33 | |