This is the mail archive of the
gcc@gcc.gnu.org
mailing list for the GCC project.
Re: C++ Standard Question
- From: Joel Sherrill <joel dot sherrill at oarcorp dot com>
- To: "libstdc++ at gcc dot gnu dot org" <libstdc++ at gcc dot gnu dot org>
- Cc: GCC Mailing List <gcc at gcc dot gnu dot org>
- Date: Thu, 22 Jan 2015 16:07:17 -0600
- Subject: Re: C++ Standard Question
- Authentication-results: sourceware.org; auth=none
- References: <54C16C36 dot 7090409 at oarcorp dot com> <alpine dot DEB dot 2 dot 11 dot 1501222239310 dot 7945 at stedding dot saclay dot inria dot fr>
On 1/22/2015 3:44 PM, Marc Glisse wrote:
> On Thu, 22 Jan 2015, Joel Sherrill wrote:
>
>> I think this is a glibc issue but since this method is defined in the C++
>> standards, I thought there were plenty of language lawyers here. :)
> s/glibc/libstdc++/ and they have their own ML.
Thank you.
>> <strstream>
> That's deprecated, isn't it?
Yes. There is also a warning about that coming from the test code.
I don't know how long it has been deprecated since even with
-std=c++03, the warning is present.
>> class strstreambuf : public basic_streambuf<char, char_traits<char> >
>> ISSUE ====> int pcount() const; <===== ISSUE
>>
>> My reading of the C++03 and draft C++14 says that the int pcount() method
>> in this class is not const. glibc has it const in the glibc shipped with
>> Fedora 20
>> and CentOS 6.
>>
>> This is a simple test case:
>>
>> #include <strstream>
>>
>> int main() {
>> int (std::strstreambuf::*dummy)() = &std::strstreambuf::pcount;
>> /*-- pcount is conformant --*/
>> return 0;
>> }
>>
>> What's the consensus?
> The exact signature of member functions is not mandated by the standard,
> implementations are allowed to make the function const if that works (or
> provide both a const and a non-const version). Your code is not guaranteed
> to work. Lambdas usually provide a fine workaround.
>
This code is actually from the Open Group FACE Conformance Test Suite.
It uses code like this to check the presence of methods from the C Standard
Library, POSIX APIs, and the C++ Standard Library. It would be really
helpful
if you could cite the place in the C++ standard so I can provide that as
feedback
to the authors of the test suite.
On a positive note, the test suite isn't flagging much using this
technique. This
may be the only method. But I would like to provide the correct feedback to
them so no one else deals with this.
Thanks.
--
Joel Sherrill, Ph.D. Director of Research & Development
joel.sherrill@OARcorp.com On-Line Applications Research
Ask me about RTEMS: a free RTOS Huntsville AL 35805
Support Available (256) 722-9985