[C++-sig] Overloaded functions returning Ll and r values

Borek Patzak borpat at seznam.cz
Sat Jul 26 16:51:51 CEST 2008


Hi, I have a question concerning wrapping overloaded functions returning 
both l-value  and r-value.
The simple example:

class Array {
  int size;
  double *values;

  Array (int size) {this->size = size; values = new double[size]; }
  Array () {size=0; values=NULL;}
  ~Array () {if (size) delete[] values;}

  inline double &at(int i) { return values [ i - 1 ]; }
  inline double    at(int i) const { return values [ i - 1 ]; }
  };

double (Array::*at1)(int) const = &Array::at;
double& (Array::*at2)(int) = &Array::at;

BOOST_PYTHON_MODULE (array_ext)
{
  class_<Array>("Array")
    .def(init<int>())
    // the following line generates an error, when invoking bjam
    .def("at", at2, return_internal_reference<>())
    .def("get", at1)
    ;
}

I am unable to generate wrapper for "double& Array ::at(int i)".
Any help?

Best regards,
Borek




More information about the Cplusplus-sig mailing list