public inbox for gcc-bugs@sourceware.org
help / color / mirror / Atom feed
* [Bug libstdc++/47380] New: concept checking and incomplete types
@ 2011-01-20 16:37 marc.glisse at normalesup dot org
  2011-01-20 18:13 ` [Bug libstdc++/47380] " paolo.carlini at oracle dot com
                   ` (10 more replies)
  0 siblings, 11 replies; 12+ messages in thread
From: marc.glisse at normalesup dot org @ 2011-01-20 16:37 UTC (permalink / raw)
  To: gcc-bugs

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

           Summary: concept checking and incomplete types
           Product: gcc
           Version: 4.6.0
            Status: UNCONFIRMED
          Severity: normal
          Priority: P3
         Component: libstdc++
        AssignedTo: unassigned@gcc.gnu.org
        ReportedBy: marc.glisse@normalesup.org


The following code compiles fine in normal mode, but not with
-D_GLIBCXX_CONCEPT_CHECKS, which basically thinks the types are incomplete. Is
this a known limitation?
(by the way, the relevant doc still says C++0x will have concepts)

#include <map>

template<typename T, typename U> struct A;

template< typename T> struct B {
        typedef A<T,B> Handle;
        std::map<int,Handle> y;
};

template<typename T, typename U = B< T> >
struct A : U { };

int main(){
        A<int> x;
}


^ permalink raw reply	[flat|nested] 12+ messages in thread

* [Bug libstdc++/47380] concept checking and incomplete types
  2011-01-20 16:37 [Bug libstdc++/47380] New: concept checking and incomplete types marc.glisse at normalesup dot org
@ 2011-01-20 18:13 ` paolo.carlini at oracle dot com
  2011-01-20 18:14 ` redi at gcc dot gnu.org
                   ` (9 subsequent siblings)
  10 siblings, 0 replies; 12+ messages in thread
From: paolo.carlini at oracle dot com @ 2011-01-20 18:13 UTC (permalink / raw)
  To: gcc-bugs

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

Paolo Carlini <paolo.carlini at oracle dot com> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
             Status|UNCONFIRMED                 |RESOLVED
         Resolution|                            |WONTFIX

--- Comment #1 from Paolo Carlini <paolo.carlini at oracle dot com> 2011-01-20 17:39:22 UTC ---
Yes it is, and no, we are not going to "fix" the legacy simulated concepts, we
are barely keeping the code, for now.


^ permalink raw reply	[flat|nested] 12+ messages in thread

* [Bug libstdc++/47380] concept checking and incomplete types
  2011-01-20 16:37 [Bug libstdc++/47380] New: concept checking and incomplete types marc.glisse at normalesup dot org
  2011-01-20 18:13 ` [Bug libstdc++/47380] " paolo.carlini at oracle dot com
@ 2011-01-20 18:14 ` redi at gcc dot gnu.org
  2011-01-20 18:52 ` paolo.carlini at oracle dot com
                   ` (8 subsequent siblings)
  10 siblings, 0 replies; 12+ messages in thread
From: redi at gcc dot gnu.org @ 2011-01-20 18:14 UTC (permalink / raw)
  To: gcc-bugs

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

--- Comment #2 from Jonathan Wakely <redi at gcc dot gnu.org> 2011-01-20 17:42:17 UTC ---
I'll fix the outdated reference to concepts in the docs though


^ permalink raw reply	[flat|nested] 12+ messages in thread

* [Bug libstdc++/47380] concept checking and incomplete types
  2011-01-20 16:37 [Bug libstdc++/47380] New: concept checking and incomplete types marc.glisse at normalesup dot org
  2011-01-20 18:13 ` [Bug libstdc++/47380] " paolo.carlini at oracle dot com
  2011-01-20 18:14 ` redi at gcc dot gnu.org
@ 2011-01-20 18:52 ` paolo.carlini at oracle dot com
  2011-01-20 20:06 ` marc.glisse at normalesup dot org
                   ` (7 subsequent siblings)
  10 siblings, 0 replies; 12+ messages in thread
From: paolo.carlini at oracle dot com @ 2011-01-20 18:52 UTC (permalink / raw)
  To: gcc-bugs

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

--- Comment #3 from Paolo Carlini <paolo.carlini at oracle dot com> 2011-01-20 18:13:40 UTC ---
And thanks for that indeed. By the way, certainly I have no principled
objections to somebody dealing with issues like the one pointed out by Marc,
but only if we are *100%* sure it doesn't cause regressions in other cases and
that doesn't add more complecity to the tricks (and a lot of time ago we came
to the conclusion that some specific issues are essentially unfixable at the
library only level, just to be clear)


^ permalink raw reply	[flat|nested] 12+ messages in thread

* [Bug libstdc++/47380] concept checking and incomplete types
  2011-01-20 16:37 [Bug libstdc++/47380] New: concept checking and incomplete types marc.glisse at normalesup dot org
                   ` (2 preceding siblings ...)
  2011-01-20 18:52 ` paolo.carlini at oracle dot com
@ 2011-01-20 20:06 ` marc.glisse at normalesup dot org
  2011-01-20 20:16 ` redi at gcc dot gnu.org
                   ` (6 subsequent siblings)
  10 siblings, 0 replies; 12+ messages in thread
From: marc.glisse at normalesup dot org @ 2011-01-20 20:06 UTC (permalink / raw)
  To: gcc-bugs

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

--- Comment #4 from Marc Glisse <marc.glisse at normalesup dot org> 2011-01-20 19:40:29 UTC ---
(In reply to comment #1)
> Yes it is, and no, we are not going to "fix" the legacy simulated concepts, we
> are barely keeping the code, for now.

Ok. If it is a "legacy", would you mind saying so in the documentation? I read
http://gcc.gnu.org/onlinedocs/libstdc++/manual/bk01pt03ch08.html (concept
checking) and the formulation about the "new" implementation is very positive
and doesn't reflect at all this legacy status.


^ permalink raw reply	[flat|nested] 12+ messages in thread

* [Bug libstdc++/47380] concept checking and incomplete types
  2011-01-20 16:37 [Bug libstdc++/47380] New: concept checking and incomplete types marc.glisse at normalesup dot org
                   ` (3 preceding siblings ...)
  2011-01-20 20:06 ` marc.glisse at normalesup dot org
@ 2011-01-20 20:16 ` redi at gcc dot gnu.org
  2011-01-20 20:18 ` redi at gcc dot gnu.org
                   ` (5 subsequent siblings)
  10 siblings, 0 replies; 12+ messages in thread
From: redi at gcc dot gnu.org @ 2011-01-20 20:16 UTC (permalink / raw)
  To: gcc-bugs

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

--- Comment #5 from Jonathan Wakely <redi at gcc dot gnu.org> 2011-01-20 20:12:55 UTC ---
(In reply to comment #4)
> (In reply to comment #1)
> > Yes it is, and no, we are not going to "fix" the legacy simulated concepts, we
> > are barely keeping the code, for now.
> 
> Ok. If it is a "legacy", would you mind saying so in the documentation? I read
> http://gcc.gnu.org/onlinedocs/libstdc++/manual/bk01pt03ch08.html (concept
> checking) and the formulation about the "new" implementation is very positive
> and doesn't reflect at all this legacy status.

You didn't think the reference to a first version in 1999 might have been a
hint those docs were written a long time ago :)

I'm updating them now


^ permalink raw reply	[flat|nested] 12+ messages in thread

* [Bug libstdc++/47380] concept checking and incomplete types
  2011-01-20 16:37 [Bug libstdc++/47380] New: concept checking and incomplete types marc.glisse at normalesup dot org
                   ` (4 preceding siblings ...)
  2011-01-20 20:16 ` redi at gcc dot gnu.org
@ 2011-01-20 20:18 ` redi at gcc dot gnu.org
  2011-01-20 20:42 ` redi at gcc dot gnu.org
                   ` (4 subsequent siblings)
  10 siblings, 0 replies; 12+ messages in thread
From: redi at gcc dot gnu.org @ 2011-01-20 20:18 UTC (permalink / raw)
  To: gcc-bugs

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

--- Comment #6 from Jonathan Wakely <redi at gcc dot gnu.org> 2011-01-20 20:14:22 UTC ---
(In reply to comment #5)
> You didn't think the reference to a first version in 1999 might have been a
> hint those docs were written a long time ago :)

or the fact that the referenced Boost docs are dated 2000!


^ permalink raw reply	[flat|nested] 12+ messages in thread

* [Bug libstdc++/47380] concept checking and incomplete types
  2011-01-20 16:37 [Bug libstdc++/47380] New: concept checking and incomplete types marc.glisse at normalesup dot org
                   ` (5 preceding siblings ...)
  2011-01-20 20:18 ` redi at gcc dot gnu.org
@ 2011-01-20 20:42 ` redi at gcc dot gnu.org
  2011-01-20 20:44 ` marc.glisse at normalesup dot org
                   ` (3 subsequent siblings)
  10 siblings, 0 replies; 12+ messages in thread
From: redi at gcc dot gnu.org @ 2011-01-20 20:42 UTC (permalink / raw)
  To: gcc-bugs

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

--- Comment #7 from Jonathan Wakely <redi at gcc dot gnu.org> 2011-01-20 20:18:32 UTC ---
Author: redi
Date: Thu Jan 20 20:18:29 2011
New Revision: 169064

URL: http://gcc.gnu.org/viewcvs?root=gcc&view=rev&rev=169064
Log:
2011-01-20  Jonathan Wakely  <jwakely.gcc@gmail.com>

        PR libstdc++/47380
    * doc/xml/manual/diagnostics.xml: Replace note about C++0x concepts.


Modified:
    trunk/libstdc++-v3/ChangeLog
    trunk/libstdc++-v3/doc/xml/manual/diagnostics.xml


^ permalink raw reply	[flat|nested] 12+ messages in thread

* [Bug libstdc++/47380] concept checking and incomplete types
  2011-01-20 16:37 [Bug libstdc++/47380] New: concept checking and incomplete types marc.glisse at normalesup dot org
                   ` (6 preceding siblings ...)
  2011-01-20 20:42 ` redi at gcc dot gnu.org
@ 2011-01-20 20:44 ` marc.glisse at normalesup dot org
  2011-01-20 20:47 ` redi at gcc dot gnu.org
                   ` (2 subsequent siblings)
  10 siblings, 0 replies; 12+ messages in thread
From: marc.glisse at normalesup dot org @ 2011-01-20 20:44 UTC (permalink / raw)
  To: gcc-bugs

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

--- Comment #8 from Marc Glisse <marc.glisse at normalesup dot org> 2011-01-20 20:29:22 UTC ---
Thank you, the new paragraph is great :-)


^ permalink raw reply	[flat|nested] 12+ messages in thread

* [Bug libstdc++/47380] concept checking and incomplete types
  2011-01-20 16:37 [Bug libstdc++/47380] New: concept checking and incomplete types marc.glisse at normalesup dot org
                   ` (7 preceding siblings ...)
  2011-01-20 20:44 ` marc.glisse at normalesup dot org
@ 2011-01-20 20:47 ` redi at gcc dot gnu.org
  2011-01-21  1:02 ` paolo.carlini at oracle dot com
  2011-08-23 15:37 ` marc.glisse at normalesup dot org
  10 siblings, 0 replies; 12+ messages in thread
From: redi at gcc dot gnu.org @ 2011-01-20 20:47 UTC (permalink / raw)
  To: gcc-bugs

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

--- Comment #9 from Jonathan Wakely <redi at gcc dot gnu.org> 2011-01-20 20:36:36 UTC ---
no problem, re-categorising bugs as features via documentation is easy ;)


^ permalink raw reply	[flat|nested] 12+ messages in thread

* [Bug libstdc++/47380] concept checking and incomplete types
  2011-01-20 16:37 [Bug libstdc++/47380] New: concept checking and incomplete types marc.glisse at normalesup dot org
                   ` (8 preceding siblings ...)
  2011-01-20 20:47 ` redi at gcc dot gnu.org
@ 2011-01-21  1:02 ` paolo.carlini at oracle dot com
  2011-08-23 15:37 ` marc.glisse at normalesup dot org
  10 siblings, 0 replies; 12+ messages in thread
From: paolo.carlini at oracle dot com @ 2011-01-21  1:02 UTC (permalink / raw)
  To: gcc-bugs

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

--- Comment #10 from Paolo Carlini <paolo.carlini at oracle dot com> 2011-01-21 00:02:38 UTC ---
Thanks Jon. Sometimes I despair we can make progress on the documentation ;)


^ permalink raw reply	[flat|nested] 12+ messages in thread

* [Bug libstdc++/47380] concept checking and incomplete types
  2011-01-20 16:37 [Bug libstdc++/47380] New: concept checking and incomplete types marc.glisse at normalesup dot org
                   ` (9 preceding siblings ...)
  2011-01-21  1:02 ` paolo.carlini at oracle dot com
@ 2011-08-23 15:37 ` marc.glisse at normalesup dot org
  10 siblings, 0 replies; 12+ messages in thread
From: marc.glisse at normalesup dot org @ 2011-08-23 15:37 UTC (permalink / raw)
  To: gcc-bugs

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

--- Comment #11 from Marc Glisse <marc.glisse at normalesup dot org> 2011-08-23 15:27:35 UTC ---
In case someone else has issues with _GLIBCXX_CONCEPT_CHECKS, all the bad cases
I have hit came from _SGIAssignableConcept, so I simply removed the content of
that concept (not very subtle I know...). Afterwards, all the errors given by
the concept checking matched real bugs in our code, and there were quite a few
so the patch didn't completely kill the checking. (Note that this is not a
proposition to change libstdc++, just information for anyone reading this
entry)

--- boost_concept_check.h.orig    2011-01-28 15:01:12.177453226 +0100
+++ boost_concept_check.h    2011-01-28 15:01:29.665445131 +0100
@@ -201,15 +201,9 @@
   struct _SGIAssignableConcept
   {
     void __constraints() {
-      _Tp __b _IsUnused(__a);
-      __a = __a;                        // require assignment operator
-      __const_constraints(__a);
     }
     void __const_constraints(const _Tp& __b) {
-      _Tp __c _IsUnused(__b);
-      __a = __b;              // const required for argument to assignment
     }
-    _Tp __a;
   };

   template <class _From, class _To>


^ permalink raw reply	[flat|nested] 12+ messages in thread

end of thread, other threads:[~2011-08-23 15:27 UTC | newest]

Thread overview: 12+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2011-01-20 16:37 [Bug libstdc++/47380] New: concept checking and incomplete types marc.glisse at normalesup dot org
2011-01-20 18:13 ` [Bug libstdc++/47380] " paolo.carlini at oracle dot com
2011-01-20 18:14 ` redi at gcc dot gnu.org
2011-01-20 18:52 ` paolo.carlini at oracle dot com
2011-01-20 20:06 ` marc.glisse at normalesup dot org
2011-01-20 20:16 ` redi at gcc dot gnu.org
2011-01-20 20:18 ` redi at gcc dot gnu.org
2011-01-20 20:42 ` redi at gcc dot gnu.org
2011-01-20 20:44 ` marc.glisse at normalesup dot org
2011-01-20 20:47 ` redi at gcc dot gnu.org
2011-01-21  1:02 ` paolo.carlini at oracle dot com
2011-08-23 15:37 ` marc.glisse at normalesup dot org

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).