Привязка функции с указанием ссылки с помощью nanobindC++

Программы на C++. Форум разработчиков
Anonymous
Привязка функции с указанием ссылки с помощью nanobind

Сообщение Anonymous »

Какой синтаксис nanobind подходит для предоставления приведенного ниже метода экземпляра?

Код: Выделить всё

struct Foo {
int &value() & {
return v;
};
int v;
};
При использовании pybind можно использовать static_cast с синтаксисом Foo::* для приведения указателя функции к соответствующему типу, например:< /p>

Код: Выделить всё

nb::class_(m, "Foo").def("value", static_cast(&Foo::value));
но при использовании nanobind я получаю такую ​​ошибку:

Код: Выделить всё

...third_party/nanobind/include/nanobind/nb_class.h:567:28: error: no matching
function for call to 'cpp_function_def(int& (Foo::*)() &, nanobind::scope,
nanobind::name, nanobind::is_method)'
567 |         cpp_function_def((detail::forward_t) f, scope(*this),
|         ~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
568 |                             name(name_), is_method(), extra...);
|                             ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Нужен ли мне какой-то класс-оболочка с методом без ссылки?

Подробнее здесь: https://stackoverflow.com/questions/792 ... h-nanobind

Вернуться в «C++»