------- Comment #5 from gzljg at hotmail dot com  2007-10-29 17:56 -------
(In reply to comment #4)
> In practice, consider this:
> 
> const
> class {
> public:
>   template <class T> operator T() const
>   {
>     return int();
>   }
> 
> } MYNULLOBJECT = {};
> 
> void f(int);
> void f(unsigned);
> 
> int main()
> {
>   f(MYNULLOBJECT);
> }
> 
> No conforming compiler accepts it.
> 

In this test case, "int" and "unsigned" are different class(thus causes
ambiguity in my view), while in the original test case, only ONE class
"std::string" involved---even with different type of constructors. Is it
sufficient for the compiler to pick up one from all its definitions?  Such as ,
when we say "std::string s();" it knows which constructor it expects?


-- 


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=33940

Reply via email to