1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29
|
cdef extern from "<utility>" namespace "std" nogil:
cdef cppclass pair[T, U]:
ctypedef T first_type
ctypedef U second_type
T first
U second
pair() except +
pair(pair&) except +
pair(T&, U&) except +
bint operator==(pair&, pair&)
bint operator!=(pair&, pair&)
bint operator<(pair&, pair&)
bint operator>(pair&, pair&)
bint operator<=(pair&, pair&)
bint operator>=(pair&, pair&)
cdef extern from * namespace "cython_std" nogil:
"""
#if __cplusplus > 199711L
#include <type_traits>
namespace cython_std {
template <typename T> typename std::remove_reference<T>::type&& move(T& t) noexcept { return std::move(t); }
template <typename T> typename std::remove_reference<T>::type&& move(T&& t) noexcept { return std::move(t); }
}
#endif
"""
cdef T move[T](T)
|