title: Boost.Python did not match signature lvalue
body: <p>I have a class <code>Foo</code> with a member <code>x</code> that I want to expose, but via a getter function rather than a property. I just discovered <a href="http://www.boost.org/doc/libs/1_58_0/libs/python/doc/v2/data_members.html#make_getter-spec" rel="nofollow"><code>make_getter</code></a>, so I thought I'd give that a go:</p>
  
  <pre><code>#include &lt;boost/python.hpp&gt;    
  namespace py = boost::python;
  
  struct Base {
      int x;
  };
  
  struct Foo : Base {
      Foo(int i): Base{i} { }
  };
  
  BOOST_PYTHON_MODULE(Foo)
  {
      py::class_&lt;Foo&gt;("Foo", py::init&lt;int&gt;())
          .def_readonly("x", &amp;Foo::x)
          .def("getX", py::make_getter(&amp;Foo::x))
          ;
  }
  </code></pre>
  
  <p>This, however, fails:</p>
  
  <pre><code>&gt;&gt;&gt; import Foo
  &gt;&gt;&gt; f = Foo.Foo(42)
  &gt;&gt;&gt; f.x
  42
  &gt;&gt;&gt; f.getX()
  Traceback (most recent call last):
    File "&lt;stdin&gt;", line 1, in &lt;module&gt;
  Boost.Python.ArgumentError: Python argument types in
      Foo.getX(Foo)
  did not match C++ signature:
      getX(Base {lvalue})
  &gt;&gt;&gt; 
  </code></pre>
  
  <p>What does that error even mean? Clearly the signatures match! How can I fix this? </p>