This is the mail archive of the libstdc++@gcc.gnu.org mailing list for the libstdc++ project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: libstdc++ not conforming with --enable-concepts-check?


magfr@lysator.liu.se wrote:

Hello.

If I try to compile the attached program and have built the compiler with
--enable-concept-checks that fails but as far as I can see from the standard
queue only requires that the elements should be CopyConstructible, there is
no requirement for DefaultConstructability, so I think that is a bug in the
concept checking code.

Hi and thanks for your message: in my opinion, indeed, we have a bug.

The problem is tha we are enforcing a wrong requirement for sequences: compare
Table 67 with:


 template <class _Sequence>
 struct _SequenceConcept
 {
   typedef typename _Sequence::reference _Reference;
   typedef typename _Sequence::const_reference _Const_reference;

   void __constraints() {
     // Matt Austern's book puts DefaultConstructible here, the C++
     // standard places it in Container
     //    function_requires< DefaultConstructible<Sequence> >();
     __function_requires< _Mutable_ForwardContainerConcept<_Sequence> >();
     __function_requires< _DefaultConstructibleConcept<_Sequence> >();

     _Sequence
       __c _IsUnused(__n),             // line 730
       __c2 _IsUnused(__n, __t),
       __c3 _IsUnused(__first, __last);
     ...
     ...
     ...

The requirement enforced at line 730 is not present in Table 67 (*). Removing it
allows your testcase to compile. I'm now testing a complete patch.


Thanks,
Paolo.

(*) To be fair, "many" "real life" sequences fulfill it... ;)


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]