#include<set>
template<typename T, typename T2 = void>
struct MySet
{
std::pair<T,bool> insert (const T& i) { return std::pair<T,bool>(T(),true); }
std::pair<T,bool> insert (T&& i) { return std::pair<T,bool>(T(),true); }
void insert (std::initializer_list<T> i) { return false; }
};
template<typename Return, typename T>
T ReceiveFuncPtr (Return (T::*Method)(const int&))
{
T obj;
(obj.*Method)(1);
return obj;
}
int main ()
{
ReceiveFuncPtr(&MySet<int>::insert); // OK
}
I2luY2x1ZGU8c2V0PgoKdGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUgVDIgPSB2b2lkPgpzdHJ1Y3QgTXlTZXQKewogIHN0ZDo6cGFpcjxULGJvb2w+IGluc2VydCAoY29uc3QgVCYgaSkgeyByZXR1cm4gc3RkOjpwYWlyPFQsYm9vbD4oVCgpLHRydWUpOyB9CiAgc3RkOjpwYWlyPFQsYm9vbD4gaW5zZXJ0IChUJiYgaSkgeyByZXR1cm4gc3RkOjpwYWlyPFQsYm9vbD4oVCgpLHRydWUpOyB9CiAgdm9pZCBpbnNlcnQgKHN0ZDo6aW5pdGlhbGl6ZXJfbGlzdDxUPiBpKSB7IHJldHVybiBmYWxzZTsgfQp9OwoKdGVtcGxhdGU8dHlwZW5hbWUgUmV0dXJuLCB0eXBlbmFtZSBUPgpUIFJlY2VpdmVGdW5jUHRyIChSZXR1cm4gKFQ6OipNZXRob2QpKGNvbnN0IGludCYpKQp7CiAgVCBvYmo7CiAgKG9iai4qTWV0aG9kKSgxKTsKICByZXR1cm4gb2JqOwp9CgppbnQgbWFpbiAoKQp7CiAgUmVjZWl2ZUZ1bmNQdHIoJk15U2V0PGludD46Omluc2VydCk7ICAvLyBPSwp9