------- Additional Comments From adah at netstd dot com  2005-08-10 02:40 
-------
Since I do not think I can find appropriate words to respond to Gaby without 
inflaming the discussion, I think I had better suppress my will to argue with 
him it for the moment.  Not that I want to ignore his messages.  On the 
contrary, I have read every word.  Sorry that I had ignored some of his advice 
before.  Some was useful.  Regret that I am not an expert in the C++ Standard, 
as most C++ users are not.

(In reply to comment #66)
> Subject: Re:  can't compile self defined void distance(std::vector<T>, 
std::vector<T>)
> > This is reasonable.  That was why I thought it was not necessary to `fix' 
this 
> > bug after some discussions.  I just thought it was still a bug, and some 
> > measures need to be taken to warn the user about this problem.  It might be 
of 
> > low priority, but simply marking it as `INVALID' just covers this problem.  
> > More people might discover this bug again and report it again, though they 
> > might not be as _____ (fill in adjectives that you like) as I am.
> Even documentioning what the standard say in the non bug section of bug 
reporting
> web page, does not help people to read the docs.  There is no way really to 
fix
> this.  Look at the sequence point docs in bug reporting web page and then 
look at
> all the dupicate bugs.
> -- Pinski

Now to your point.  Please notice that my current stance is not that GCC should 
fix this `bug'.  I have stated it days ago.  But the user's failure is really 
UNEXPECTED, and this is a PROBLEM.  To avoid this problem, a better diagnostic 
message should be emitted.  Just try compiling the OP's program to see my point.

My bug report was a duplicate too, but I did do a search on `Koenig'.  I did 
not search on `distance' because I did not think it was the point.

(In reply to comment #67)
> I think we should all recuse ourselves from this discussion, since we just 
> keep iterating our same old positions: 
>  
> Yongwei believes that this is a defect in the standard and that gcc should 
> not follow the standard in this respect. 
>  
> Gaby and I believe that gcc should follow the standard, and probably both 
> believe that the standard does not have a defect in this respect. We believe 

I cannot help wondering why (though this might be better discussed on 
comp.std.c++: I do hope you can discuss there).  IMHO, the current bahaviour is 
violating the rationale of the std namespace.

> that changing the standard would require a massive change in the language, 
> since it would either a) require the introduction of concepts (so that 
> std::distance can only be called with arguments that match the concept 
> of an iterator; same for all other similar functions), or b) abandoning  
> argument dependent (Koenig) name lookup. Neither sounds like an appealing 

If this bug should ever be fixed, I would prefer this approach:

c) Failure to instantiate a template function should automatically remove it 
from the candidates of overload resolution.

> idea. We believe that users can work around this perceived problem by 
> simply calling  
>   ::distance (arg1, arg2) 
> to get to their own implementation, not the one in std:: 

Passing this information to the user is difficult, unless GCC emits a 
diagnostic message to help users do so, as GCC is currently doing on the 
missing of `typename'.

> Since we can't seem to find an agreement, let's just leave it at that. 
>  
> W. 

I am not an unreasonable person.  I just want to see a reasonable ending.

Yongwei


-- 


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

Reply via email to