Вызываю из 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);
}