------- Additional Comments From gdr at integrable-solutions dot net  2004-08-03 13:01 
-------
Subject: Re:  can't compile self defined void distance(std::vector<T>, std::vector<T>)

"giovannibajo at libero dot it" <[EMAIL PROTECTED]> writes:

| ------- Additional Comments From giovannibajo at libero dot it  2004-08-03 12:48 
-------
| Subject: Re:  can't compile self defined void distance(std::vector<T>, 
std::vector<T>)
| 
| gdr at integrable-solutions dot net wrote:
| 
| >> Is there *anything* in the standard saying that the code is actually
| >> illegal?
| >> This is a rejects-valid IMO.
| 
| >   Can you elaborate on why you believe this is a reject a valid?
| 
| Because I think that picking up std::distance by Koenig lookup and having it
| *abort compilation* instead of being reject as an invalid overload is just an
| unintended side effect of the implementation.

I'm more interested in chapter and verse, since you stated that this
is a reject-valid. 

| If you want to push it, it might
| be an unintended side-effect of the standard - fine, the standard is broken.

Then, take it to the C++ standards committee.

| But I won't never buy that the code is rightfully ill-formed as-is. It breaks

It is fundamentally broken as per the current standard.  If you
think the standard is broken, then take it to the committee and fix
the standard.

[...]

| Or maybe, we could have a way to use enable_if using as condition "does
| iterator_traits<T> have a nested difference_type?".

You could use iterator_traits, but again the code is fundamentally
broken. Papering over the problem is the wrong thing to do.  A broken
code should explose as soon as possible.  Otherwise, a QoI we don't do
a good job at spotting broken or dubious or non-portable codes.

-- Gaby


-- 


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

Reply via email to