public inbox for gcc-bugs@sourceware.org
help / color / mirror / Atom feed
* [Bug libstdc++/64814] New: std::copy_n advances InputIterator one *less* time than necessary.
@ 2015-01-27  3:49 alex-j-a at hotmail dot co.uk
  2015-01-27 11:28 ` [Bug libstdc++/64814] " redi at gcc dot gnu.org
                   ` (9 more replies)
  0 siblings, 10 replies; 11+ messages in thread
From: alex-j-a at hotmail dot co.uk @ 2015-01-27  3:49 UTC (permalink / raw)
  To: gcc-bugs

https://gcc.gnu.org/bugzilla/show_bug.cgi?id=64814

            Bug ID: 64814
           Summary: std::copy_n advances InputIterator one *less* time
                    than necessary.
           Product: gcc
           Version: 4.9.2
            Status: UNCONFIRMED
          Severity: major
          Priority: P3
         Component: libstdc++
          Assignee: unassigned at gcc dot gnu.org
          Reporter: alex-j-a at hotmail dot co.uk

Bug 50119 is related. The issue should be clear from the example below; I've
confirmed the output on several web-based compilers (I'm using a chromebook in
standard config) all of which claim to use GCC. 

minimal failing example:
#include <iostream>
#include <sstream>
#include <algorithm>
#include <iterator>
#include <string>

int main() {
    std::istringstream ss("123456789012");
    std::string output;

    auto readIter = std::istreambuf_iterator<char>(ss);
    for (int i = 0; i < 3; ++i) {
        output.clear();
        auto inserter = std::back_inserter(output);
        // Works - outputs 123456789012
        //for (int j = 0; j < 4; ++j)
        //    *inserter++ = *readIter++;

        // Doesn't work - outputs 123445677890
        std::copy_n(readIter, 4, inserter);

        std::cout << output;
    }
}

The following works perfectly as a drop-in replacement from my tests:
template <typename InputIt, typename SizeT, typename OutputIt>
OutputIt copy_n(InputIt first, SizeT count, OutputIt result) {
    for (; count > 0; --count)
        *result++ = *first++;
    return result;
}


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

end of thread, other threads:[~2015-01-29 21:06 UTC | newest]

Thread overview: 11+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2015-01-27  3:49 [Bug libstdc++/64814] New: std::copy_n advances InputIterator one *less* time than necessary alex-j-a at hotmail dot co.uk
2015-01-27 11:28 ` [Bug libstdc++/64814] " redi at gcc dot gnu.org
2015-01-27 16:06 ` redi at gcc dot gnu.org
2015-01-27 16:09 ` alex-j-a at hotmail dot co.uk
2015-01-27 16:18 ` redi at gcc dot gnu.org
2015-01-27 16:29 ` redi at gcc dot gnu.org
2015-01-27 16:40 ` alex-j-a at hotmail dot co.uk
2015-01-27 16:51 ` alex-j-a at hotmail dot co.uk
2015-01-27 17:06 ` redi at gcc dot gnu.org
2015-01-28 13:40 ` redi at gcc dot gnu.org
2015-01-29 21:06 ` alex-j-a at hotmail dot co.uk

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).