 
         Array w = Empty(Shape{m}, dtype, device);
 
-        auto syevd_impl = [&](auto pt, auto syevd_bufferSize, auto syevd) -> std::tuple<Array, Array> {
+        auto syevd_impl = [&](auto pt) -> std::tuple<Array, Array> {
             using T = typename decltype(pt)::type;
             cuda_internal::DeviceInternals& device_internals = cuda_internal::GetDeviceInternals(static_cast<CudaDevice&>(device));
 

            }

            int buffersize = 0;
            device_internals.cusolverdn_handle().Call(syevd_bufferSize, jobz, uplo, m, v_ptr, lda, w_ptr, &buffersize);

            Array work = Empty(Shape{buffersize}, dtype, device);
            T* work_ptr = static_cast<T*>(internal::GetRawOffsetData(work));

            return std::make_tuple(std::move(w), std::move(v.Transpose().Copy()));
        };

        return VisitFloatingPointDtype(dtype, syevd_impl);
    }
};

