You will have an overload resolution that the first min prefers for the first case. It takes both arguments with an exact match, and the second min needs a database conversion to convert the arguments.
As you later understood (through experimentation?), If you use container<...> as argument types, instead of derived classes, conversion with a derived base will no longer be necessary, and then overload resolution will be preferable to the second because otherwise they are both equally good accept arguments, but the second pattern (in your own decision) is more specialized.
However, in your own solution, you need to put typename in front of the return type in order to make a Standard C ++ solution. I think that the problem that forces you to define the second template is that in order to make the template more specialized, the first min min must accept all the arguments that the second template takes, which is calculated by simply comparing the arguments of the second template with first
container<N, T, VT1> -> T // func param 1 container<N, T, VT2> -> T // func param 2
Thus, various types of template parameters are tried to output to the same template parameter, which will cause a conflict and make the first template unsuccessful, displaying all the arguments of the second template. For your own solution, this is not the case:
container<N, T, VT> -> T // func param 1 container<N, T, VT> -> T // func param 2
This will force the first template to deduce all types of parameters from the second template, but not vice versa: container<N, T, VT> will not match an arbitrary T Thus, your own solution template is more specialized and called, and then explicitly redirected to another template.
Finally, note that your own decision only accepts containers where the third template argument is the same, while your other min template accepts containers where this argument may be different for both arguments. I'm not sure if this is on purpose, but given another min function that conflicts if you don't make the types of the third argument the same as shown above, I'm not sure how to fix this.
Subsequently, the commentator edited his own answer, so most of my links above to “your own answer” no longer apply.