boostorg / boostorg/python

boost::python fails to correctly handle constness of wrapped classes

Aperta
#205 2 commenti 0 reazioni 0 assegnatari Vedi su GitHub
Lingua principale
C++
Stelle
537
Fork
223
Merge medio
11h 22m
PR unite (30g)
2

Descrizione

I want to wrap C++ code that only provides `const` access to a class `Foo`:

```cpp
struct Foo {};
std::shared_ptr producer();
```
Wrapping `Foo` as usual:
```cpp
BOOST_PYTHON_MODULE(foo) {
boost::python::class_, boost::noncopyable>("Foo", boost::python::no_init);
boost::python::def("producer", &producer);
}
```
compiles fine, but complains at runtime - obviously - about a missing type converter:
`No to_python (by-value) converter found for C++ type: std::shared_ptr`

Alternatively trying:
```cpp
BOOST_PYTHON_MODULE(foo) {
// const holder
boost::python::class_, boost::noncopyable>("Foo", boost::python::no_init);
// const class + holder
boost::python::class_, boost::noncopyable>("Foo", boost::python::no_init);
}
```
yields compile-time errors about constness issues. Isn't there a solution available that respects constness?

Guida per i contributori

Nessuna guida per i contributori indicizzata per questo repository

Valutazione

Questa issue non è ancora stata valutata.

Ricevi le nuove issue nella tua casella

Un breve riepilogo di issue GitHub adatte ai principianti.