no, boost::bind creates a function object by binding (here runQuery()) a member function to an object (here this). So it exeutes runQuery() on the very object you call getProducs() on.

You can also pass YourClassName() instead of this, then you create a temporary that is used for executing. (Also note that you might need a separe db connection if you are using the db from the main thread, too.)