如何解决在c ++
我正在尝试创建一个pybind11接口,该接口将从C ++返回两个numpy数组的元组。 lambda表达式内的子函数lttb返回两个std::vector<double>
和std::vector<std::variant<uint32_t,in64_t,double>>
类型的向量。
如果我直接返回向量,则pybind11/stl.h
标头会很好地处理转换。 double
numpy数组的创建也可以正常工作。但是,当尝试创建std::variant
的numpy数组时,出现以下错误
..\subprojects\pybind11\include\pybind11/numpy.h(1159): error C2338: Attempt to use a non-POD or unimplemented POD type as a numpy dtype
有一种方法可以注册结构化类型(https://pybind11.readthedocs.io/en/stable/advanced/pycpp/numpy.html#structured-types)来防止出现此错误消息,但是我只看到一种使用struct
而不是{{1} }。有人知道如何创建std::variant
的Numpy数组吗?应该不难,因为std::variant
的转换是开箱即用的。这是代码。
std::vector<std::variant<...>>
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。