template<typename T>
concept cpp_matrix::MatrixBackend = std::is_same_v<T, backend::CpuMatrix<std::float16_t>> || std::is_same_v<T, backend::CpuMatrix<std::float32_t>>
|| std::is_same_v<T, backend::CudaMatrix<std::float16_t>> || std::is_same_v<T, backend::CudaMatrix<std::float32_t>>