
David Abrahams wrote:
Markus Schöpflin <markus.schoepflin@comsoft.de> writes:
[snip]
I'm confused. I was pretty sure Ralf was running Boost.Python on that compiler. Ralf?
Hmm, the tests have been failing for 1.32 as well. It was the same problem.
I had a look at the standard what should happen in this case, but after reading [temp.over] I'm not really sure if we don't indeed end up with two candidate functions for the overload resolution of foo(), one being the overload itself and the other the specialization of the function template for int. Could anyone please clarify this?
The non-template function should be preferred. The function template should never even get instantiated.
Could you perhaps point me to the section in the standard where this is specified? [temp.over] doesn't require this, I think.
As for a possible workaround, replacing the overload with a specialization of the function template would work, AFAICT. Would such a patch be accepted?
If it's a localized patch somewhere in Boost.Python, it might. But this sounds like the sort of problem that would require sweeping fixes. No?
I'll have to try to be sure, but I think you are right, it will require tweaking much code. Markus