9template <
typename T1,
typename T2>
struct pair {
27 template <
typename U1,
typename U2>
31 template <
typename U1,
typename U2>
35 template <
typename U1,
typename U2>
55template <
typename T1,
typename T2,
typename U1,
typename U2>
60template <
typename T1,
typename T2,
typename U1,
typename U2>
65template <
typename T1,
typename T2,
typename U1,
typename U2>
70template <
typename T1,
typename T2,
typename U1,
typename U2>
75template <
typename T1,
typename T2,
typename U1,
typename U2>
80template <
typename T1,
typename T2,
typename U1,
typename U2>
86template <
typename T1,
typename T2>
92template <
typename T1,
typename T2>
98template <fl::size I,
typename T1,
typename T2>
101template <
typename T1,
typename T2>
106template <
typename T1,
typename T2>
112template <fl::size I,
typename T1,
typename T2>
114 static_assert(I < 2,
"Index out of bounds for pair");
122template <fl::size I,
typename T1,
typename T2>
124 static_assert(I < 2,
"Index out of bounds for pair");
132template <fl::size I,
typename T1,
typename T2>
134 static_assert(I < 2,
"Index out of bounds for pair");
143template <
typename T,
typename T1,
typename T2>
146 "Type T must be one of the pair's element types");
148 "Type T must be unique in the pair");
156template <
typename T,
typename T1,
typename T2>
159 "Type T must be one of the pair's element types");
161 "Type T must be unique in the pair");
169template <
typename T,
typename T1,
typename T2>
172 "Type T must be one of the pair's element types");
174 "Type T must be unique in the pair");
186template <
typename T1,
typename T2>
188 static constexpr fl::size
value = 2;
191template <fl::size I,
typename T>
194template <
typename T1,
typename T2>
199template <
typename T1,
typename T2>
204template <
typename T1,
typename T2>
#define FL_DISABLE_WARNING_PUSH
#define FL_DISABLE_WARNING_NULL_DEREFERENCE
#define FL_DISABLE_WARNING_POP
constexpr remove_reference< T >::type && move(T &&t) noexcept
void swap(array< T, N > &lhs, array< T, N > &rhs) noexcept(noexcept(lhs.swap(rhs)))
pair< typename fl::decay< T1 >::type, typename fl::decay< T2 >::type > make_pair(T1 &&t, T2 &&u)
bool operator!=(const array< T, N > &lhs, const array< T, N > &rhs)
bool operator>=(const pair< T1, T2 > &lhs, const pair< U1, U2 > &rhs)
bool operator<(const pair< T1, T2 > &lhs, const pair< U1, U2 > &rhs)
bool operator==(const array< T, N > &lhs, const array< T, N > &rhs)
pair_element< I, T1, T2 >::type & get(pair< T1, T2 > &p) noexcept
bool operator<=(const pair< T1, T2 > &lhs, const pair< U1, U2 > &rhs)
constexpr T && forward(typename remove_reference< T >::type &t) noexcept
bool operator>(const pair< T1, T2 > &lhs, const pair< U1, U2 > &rhs)
typename conditional< is_array< U >::value, typename remove_extent< U >::type *, typename conditional< is_function< U >::value, typename add_pointer< U >::type, typename remove_cv< U >::type >::type >::type type
static constexpr bool value
pair(pair &&other) noexcept
FL_DISABLE_WARNING_PUSH FL_DISABLE_WARNING_NULL_DEREFERENCE pair(const T1 &k, const T2 &v)
void swap(pair &other) noexcept
pair(const pair &other)=default
pair(pair< U1, U2 > &&other)
pair & operator=(const pair &other)=default
FL_DISABLE_WARNING_POP pair(U1 &&u1, U2 &&u2)
pair(const pair< U1, U2 > &other)
pair & operator=(pair &&other)=default
static constexpr fl::size value