This question is spawned from
Passing a member function pointer to an overloaded class method into a template function.
You need not read that to understand this que
The problem isn't with the insert functions you showed in MySet. The problem is with one of the ones you omitted. Specifically:
template< class InputIt >
void insert( InputIt first, InputIt last );
From [temp.deduct.call]:
When P is a function type, pointer to function type, or pointer to member function type:
— If the argument is an overload set containing one or more function templates, the parameter is treated as a non-deduced context.
Since &std::setMySet does not contain a function template overload for insert, which is why it works fine. If you add one, you'll see that it will also fail to compile.