The function expects a pointer to the complex value, not the value itself. You'll need a variable to store the value in, and then pass the address of that:
std::complex<double> alpha(1,0);
cblas_zgemv(..., &alpha, ...);
I believe this is safe since lapack_complex_double
is layout-compatible with (and, in C++, is an alias for) std::complex<double>
. To be on the safe side, you might prefer to use lapack_complex_double
when calling that library.