     UnaryOpImpl(Op op) : op{op} {}
 
     __device__ void operator()(int64_t /*i*/, CudaType x, CudaType& out) { out = op(x); }
-=======
-template <typename T>
-struct CudaUnaryOp {
-    T (*func)(T);
-
-    CudaUnaryOp(T (*func)(T)) : func{func} {}
-
-    __device__ void operator()(int64_t /*i*/, T x, T& out) { out = func(x); }
->>>>>>> add-a/sinh-a/cosh
 };
 
 class CudaSinhOp : public SinhOp {

namespace cuda {
namespace {

<<<<<<< HEAD
template <typename CudaType, typename Op>
struct UnaryOpImpl {
    Op op;

        VisitFloatingPointDtype(out.dtype(), [&](auto pt) {
            using T = typename decltype(pt)::type;
            using CudaType = cuda_internal::DataType<T>;
            auto op = cuda::Cosh<CudaType>{};
            auto functor = UnaryOpImpl<CudaType, decltype(op)>{op};
            Elementwise<const T, T>(functor, x_cast, out);
        });
    }
};
