【发布时间】:2023-02-13 04:14:04
【问题描述】:
在 python 中,您可以定义动态返回不同类型的函数:
def func(b):
if b:
return 42
else:
return "hello"
我如何在 C++ 中实现这样的函数并使用 pybind11 导出它?
理想情况下它会是这样的:
m.def("func", [](bool b) -> py::object {
if(b)
return /* something */(42);
else
return /* something */("hello");
});
但是,我没有找到如何使用已注册 C++ 类型的对象构造 py::object。
这可能吗?
【问题讨论】:
-
使用
std::variant -
啊,当然!没想到!谢谢!
-
你可以,但你应该吗?
-
这似乎是不明智的事情,但结合新的结构模式匹配,它很有意义。
-
您能否演示一下
std::variant的解决方案是什么样子的?