LINUX.ORG.RU

Определить тип возвращаемого из Python в C++ значения (при помощи pybind11)

 , ,


0

1

Вызываю из C++ некоторую Python-функцию, которая может возвращать одну строку или список строк. Для интерфейса Python-С++ использую pybind11.

Сейчас делаю так (res имеет тип pybind11::object)

std::vector<std::string> result;
try {
    result.push_back(pybind11::cast<std::string>(res));
} catch(pybind11::cast_error& Err) {
    result = pybind11::cast<std::vector<std::string>>(res);
}

Есть ли более элегантный способ?

Элегантный способ (спасибо за подсказку):

if (py::isinstance<py::str>(res)) {
    result.push_back(pybind11::cast<std::string>(res));
} else {
    result = pybind11::cast<std::vector<std::string>>(res);
}

★★★★★