*impl: using shared_ptr & std::bind