#ifndef PYTHONIC_INCLUDE_NUMPY_COPY_HPP #define PYTHONIC_INCLUDE_NUMPY_COPY_HPP #include "pythonic/include/utils/functor.hpp" #include "pythonic/include/utils/numpy_conversion.hpp" #include "pythonic/include/types/ndarray.hpp" PYTHONIC_NS_BEGIN namespace numpy { // list case template typename std::enable_if< !types::is_array::value && !types::is_dtype::value, types::ndarray>>::type copy(E const &v); // scalar / complex case template auto copy(E const &v) -> typename std::enable_if::value, E>::type; // No copy is required for numpy_expr template auto copy(E &&v) -> typename std::enable_if::value, decltype(std::forward(v))>::type; // ndarray case template types::ndarray copy(types::ndarray const &a); // transposed ndarray case template types::numpy_texpr> copy(types::numpy_texpr> const &a); DEFINE_FUNCTOR(pythonic::numpy, copy); } PYTHONIC_NS_END #endif