utility.pxd 1.0 KB

123456789101112131415161718192021222324252627282930
  1. cdef extern from "<utility>" namespace "std" nogil:
  2. cdef cppclass pair[T, U]:
  3. ctypedef T first_type
  4. ctypedef U second_type
  5. T first
  6. U second
  7. pair() except +
  8. pair(pair&) except +
  9. pair(T&, U&) except +
  10. bint operator==(pair&, pair&)
  11. bint operator!=(pair&, pair&)
  12. bint operator<(pair&, pair&)
  13. bint operator>(pair&, pair&)
  14. bint operator<=(pair&, pair&)
  15. bint operator>=(pair&, pair&)
  16. cdef extern from * namespace "cython_std" nogil:
  17. """
  18. #if __cplusplus >= 201103L || (defined(_MSC_VER) && _MSC_VER >= 1600)
  19. // move should be defined for these versions of MSVC, but __cplusplus isn't set usefully
  20. #include <type_traits>
  21. namespace cython_std {
  22. template <typename T> typename std::remove_reference<T>::type&& move(T& t) noexcept { return std::move(t); }
  23. template <typename T> typename std::remove_reference<T>::type&& move(T&& t) noexcept { return std::move(t); }
  24. }
  25. #endif
  26. """
  27. cdef T move[T](T)