如何在 cython 中声明一个 C++ 元组

How to declare a c++ tuple in cython

我有一个 C++ 方法声明如下:

std::tuple<std::vector<int>, std::size_t, std::size_t> get_state(); // Should I use a struct and expose the struct instead?

我想声明一个 cython 扩展以在 Python

中连接它
cdef extern from "cpp_sources/CClass.hpp":
    cdef cppclass CClass nogil:
        tuple[vector[int], size_t, size_t] get_state()

不幸的是,我没有看到一个简单的导入来访问 C++ 元组。 我也检查了 here 没有成功。

我的问题是,是否有一种访问 C++ 元组的简单方法?或者也许有更好的方法来访问某些元素?

(我们不关心这个确切方法的性能)

很遗憾,这不受支持。更普遍的是 variadic templates 不受支持 - 这就是为什么你有 pair ,而不是通用元组的原因。

在我链接的 github 问题中,他们有自己的解决方法版本,这是我首先想到的 - 对于我实际使用的每个 N 个参数,

template<typename T_1, ... typename T_N>
using tupleN = std::tuple<T_1, ..., TN>;

并单独导出每个 tupleN。据我所知,在此处制作通用可变参数模板并不神奇。