[Bug libstdc++/37811] bind1st fails on mem_fun with reference argument

2008-10-13 Thread paolo dot carlini at oracle dot com


--- Comment #1 from paolo dot carlini at oracle dot com  2008-10-13 08:44 
---
Apparently the other library doesn't implement the resolution of DR 109 (if I
comment out the additional operator() the code compiles). In any case, there
are very long standing issues with those facilities, which will be deprecated
in C++0x (we already moved the code to include/backward/) and replaced by bind.


-- 

paolo dot carlini at oracle dot com changed:

   What|Removed |Added

 Status|UNCONFIRMED |RESOLVED
  Component|c++ |libstdc++
 Resolution||INVALID


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



[Bug libstdc++/37811] bind1st fails on mem_fun with reference argument

2008-10-13 Thread igodard at pacbell dot net


--- Comment #2 from igodard at pacbell dot net  2008-10-13 15:18 ---
Deprecated or not, shouldn't it work up until when it is actually removed?

And forgive me, but I don't understand the relevance of DR 109 here. Perhaps
you meant some other number?

Lastly, if this is not a compiler issue should I file it against c++lib
instead?

Ivan


-- 

igodard at pacbell dot net changed:

   What|Removed |Added

 Status|RESOLVED|UNCONFIRMED
 Resolution|INVALID |


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



[Bug libstdc++/37811] bind1st fails on mem_fun with reference argument

2008-10-13 Thread paolo dot carlini at oracle dot com


--- Comment #3 from paolo dot carlini at oracle dot com  2008-10-13 15:27 
---
(In reply to comment #2)
 Deprecated or not, shouldn't it work up until when it is actually removed?

It works perfectly well, as designed, without regressions, it's just that
implementing the resolution of library DR 109:

  http://www.open-std.org/jtc1/sc22/wg21/docs/lwg-defects.html#109

causes this rejection. As I said already, these issues are *known* by the
Committee and that's why those facilities are considered unreparably flawed in
general, thus deprecated, and replaced by bind in C++0x.


-- 

paolo dot carlini at oracle dot com changed:

   What|Removed |Added

 Status|UNCONFIRMED |RESOLVED
 Resolution||INVALID


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



[Bug libstdc++/37811] bind1st fails on mem_fun with reference argument

2008-10-13 Thread igodard at pacbell dot net


--- Comment #4 from igodard at pacbell dot net  2008-10-13 16:06 ---
Ah - I was looking at language DR109, not library DR109. However, the correct
DR says the committee approved the example reported here (and adds the fix) so
gcc appears to be in error to fail it. However, there is the curious remark:
Howard believes there is a flaw in this resolution. See c++std-lib-9127. 
 We may need to reopen this issue.
Unfortunately Google turns up nothing for c++std-lib-9127 except this cryptic
message, and just 9127 and other variations aren't productive either. Can you
tell me where to find it? 


-- 

igodard at pacbell dot net changed:

   What|Removed |Added

 CC||igodard at pacbell dot net


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



[Bug libstdc++/37811] bind1st fails on mem_fun with reference argument

2008-10-13 Thread paolo dot carlini at oracle dot com


--- Comment #5 from paolo dot carlini at oracle dot com  2008-10-13 16:23 
---
(In reply to comment #4)
 Ah - I was looking at language DR109, not library DR109. However, the correct
 DR says the committee approved the example reported here (and adds the fix) so
 gcc appears to be in error to fail it.

That't *not* true. The example in DR 109 does *not* compile if the additional
operator() are not added and does when the resolution of DR 109 is implemented.

 However, there is the curious remark:
 Howard believes there is a flaw in this resolution. See c++std-lib-9127. 
  We may need to reopen this issue.

In any case, this is moot. As I tried to explain, nobody really cares these
days about those bind1st and bind2nd binders, in the CD1 C++0x are already in
an appendix, as deprecated features, with the exact resolution of issue DR 109
included, as we are doing.

 Unfortunately Google turns up nothing for c++std-lib-9127 except this 
 cryptic
 message, and just 9127 and other variations aren't productive either. Can 
 you
 tell me where to find it?

It's a message to the ISO library reflector. Really, given the above, I would
suggest not wasting further time...


-- 


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



[Bug libstdc++/37811] bind1st fails on mem_fun with reference argument

2008-10-13 Thread igodard at pacbell dot net


--- Comment #6 from igodard at pacbell dot net  2008-10-13 17:01 ---
Then I'm hopelessly confused. It's clear that my report and the example in
DR109 are the same problem. You say: The example in DR 109 does *not* compile
if the additional operator() are not added and does when the resolution of DR
109 is implemented. That makes sense - with the addition of the overload my
example will compile too. So it appears that gcc (at least 4.3.1) does *not*
implement DR109.

You then say, in essence, So what, it's deprecated in C++0X and there's a
better solution therein, get over it. Would that I could! Unfortunately, out
here in the real world some of us have legal, business, and practical mandates
that *require* us to use only *officially issued* language standards, and
explicitly prohibit us from using extensions, next-release features and so on.
On pain of being fired, if not worse.

I realize that keeping up with soon-to-be-obviated DRs is not the most
professionally satisfying activity. But the fix here seems so well known and
trivial that I don't understand a reluctance to put it in. However, gcc is a
volunteer project and if nobody will put it in then nobody will put it in. May
I suggest that the proper resolution of my report is VERIFIED - WONT FIX?

Or perhaps I've again misunderstood?


-- 

igodard at pacbell dot net changed:

   What|Removed |Added

 Status|RESOLVED|UNCONFIRMED
 Resolution|INVALID |


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



[Bug libstdc++/37811] bind1st fails on mem_fun with reference argument

2008-10-13 Thread paolo dot carlini at oracle dot com


--- Comment #7 from paolo dot carlini at oracle dot com  2008-10-13 17:13 
---
(In reply to comment #6)
 Then I'm hopelessly confused. It's clear that my report and the example in
 DR109 are the same problem. You say: The example in DR 109 does *not* compile
 if the additional operator() are not added and does when the resolution of DR
 109 is implemented. That makes sense - with the addition of the overload my
 example will compile too. So it appears that gcc (at least 4.3.1) does *not*
 implement DR109.

No It does *exactly* implement the DR, it SIMPLY adds the two operator().
Your problem is totally different, has to do with the obnoxious reference to
reference issue, which plagued C++03. The overloads are already there, check
again in the code of the library, but are there to fix a completely different
issue, that reported in DR 109, which has to do with non-const members.

Please, do not re-open PR at your will. This issue is absolutely clear to the
maintainers of the library and nobody (I repeat nobody) will take any further
real action, irrespective of you reopening it or not.


-- 

paolo dot carlini at oracle dot com changed:

   What|Removed |Added

 Status|UNCONFIRMED |RESOLVED
 Resolution||INVALID


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



[Bug libstdc++/37811] bind1st fails on mem_fun with reference argument

2008-10-13 Thread igodard at pacbell dot net


--- Comment #8 from igodard at pacbell dot net  2008-10-13 17:55 ---
OK, thanks for your time.


-- 


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



[Bug libstdc++/37811] bind1st fails on mem_fun with reference argument

2008-10-13 Thread paolo dot carlini at oracle dot com


--- Comment #9 from paolo dot carlini at oracle dot com  2008-10-13 19:07 
---
FYI, I had a quick look to the library likely used by current Comeau: it
doesn't implement the letter of the Standard for bind1st  co, neither before
nor after DR 109. It tries to circumvent the limitations of the original
design. To be clear again, we'll not follow that route, we deliver a strictly
conforming implementation, DR 109 included and included the fact that the
facility is considered deprecated, essentially frozen and ready for removal.


-- 


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