Я пишу python-привязки для glog-подобной библиотеки, которая использует макрос и имеет cout-подобный синтаксис для ведения журнала.
LOG(LEVEL)<<" "<<" "...
,
Поэтому я использую эту функцию для вызова макроса
template <typename Arg, typename... Args>
void log(auto level, Arg&& arg, Args&&... args)
{
std::stringstream out;
out << std::forward<Arg>(arg);
using expander = int[];
(void)expander{0, (void(out << ' ' << std::forward<Args>(args)), 0)...};
LOG(level) << out.str();
}
Поэтому, чтобы обернуть эту функцию для модуля pybind11, мне нужно явно указать тип шаблона.
Есть ли возможный обходной путь или способ связать эту функцию, используя pybind11? Я также открыт для использования других библиотек, таких как boost.python или даже cython, если это возможно.
Задача ещё не решена.
Других решений пока нет …