1. Okay.
2. To fix like your suggestions there will be (..somewhat..) big change of the interface. Is it all right? I was trying to minimize the change. What is your recommendation?
a. delete ::_delegate, add several std::function<> and save _delegate::* into those std::function<>. (This will prevent to change api)
b. keep my change (This also keep the api same)