<p>A quick search gave me this <a href="http://www.mail-archive.com/dbdi-dev@perl.org/msg00002.html" rel="nofollow noreferrer">announcement of Parrot DBDI</a> from January 2004 and a <a href="http://www.mail-archive.com/dbdi-dev@perl.org/" rel="nofollow noreferrer">dbdi-dev mailing list</a> which appears to be long dead. Is Parrot DBDI still being developed? Is anyone working on a different database API or interface for Parrot?</p>

The lookup is done at a time when the constness of
```
this
```
is not known.  You just have to give it a hint via casting.  Try this:
```
```
typedef void (abc::*fptr)(int) const; // or remove const
std::tr1::bind((fptr)&abc::hello, x , _1)(a);
```
```
You may also notice here that removing the
```
const
```
still works.  This is because you should be passing x by pointer (because the first argument to a C++ member function, the implicit
```
this
```
parameter, is always a pointer).  Try this instead:
```
```
typedef void (abc::*fptr)(int) const; // won't compile without const (good!)
std::tr1::bind((fptr)&abc::hello, &x , _1)(a);
```
```
As discovered during within my comments below, if you omit the
```
&
```
as you originally did, you'll be passing x
by value
, which is usually not what you want (though it makes little practical difference in your particular example).  This actually seems like an unfortunate pitfall for
```
bind
```
.