public inbox for gcc-bugs@sourceware.org
help / color / mirror / Atom feed
* [Bug libstdc++/41351]  New: std::rotate on RAI does not conform to ISO complexity requirement
@ 2009-09-13 22:20 potswa at mac dot com
  2009-09-14  7:24 ` [Bug libstdc++/41351] " chris at bubblescope dot net
                   ` (57 more replies)
  0 siblings, 58 replies; 59+ messages in thread
From: potswa at mac dot com @ 2009-09-13 22:20 UTC (permalink / raw)
  To: gcc-bugs

According to C++03 and C++0x, std::rotate has "Complexity: At most last - first
swaps."

The random iterator implementation does not call std::swap at all, but rather
creates a temporary variable and uses the assignment operator to implement
swapping. std::swap often has different complexity than two assignments, so
this is non-conforming. Note that the standard requires that std::swap on any
container take constant time, but assignment will take linear time.

The temporary variable appears to be an optimization for native machine types:
rather than move each object to its final location with a swap operation, move
it with an assignment and avoid performing twice the necessary assignments.
This is a good goal, and perhaps it may be achieved using a special
temporary-variable template type which calls std::swap for all but some subset
of types.


-- 
           Summary: std::rotate on RAI does not conform to ISO complexity
                    requirement
           Product: gcc
           Version: 4.2.1
            Status: UNCONFIRMED
          Severity: major
          Priority: P3
         Component: libstdc++
        AssignedTo: unassigned at gcc dot gnu dot org
        ReportedBy: potswa at mac dot com


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


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

end of thread, other threads:[~2009-11-03 21:36 UTC | newest]

Thread overview: 59+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2009-09-13 22:20 [Bug libstdc++/41351] New: std::rotate on RAI does not conform to ISO complexity requirement potswa at mac dot com
2009-09-14  7:24 ` [Bug libstdc++/41351] " chris at bubblescope dot net
2009-09-14  9:33 ` paolo dot carlini at oracle dot com
2009-09-14 10:49 ` paolo dot carlini at oracle dot com
2009-09-14 16:36 ` potswa at mac dot com
2009-09-14 17:00 ` chris at bubblescope dot net
2009-09-14 18:00 ` potswa at mac dot com
2009-09-14 18:11 ` chris at bubblescope dot net
2009-09-14 21:36 ` potswa at mac dot com
2009-09-14 23:41 ` paolo dot carlini at oracle dot com
2009-09-15  0:00 ` potswa at mac dot com
2009-09-15  0:07 ` paolo dot carlini at oracle dot com
2009-09-15  8:56 ` potswa at mac dot com
2009-09-15  9:59 ` paolo dot carlini at oracle dot com
2009-09-15  9:59 ` paolo dot carlini at oracle dot com
2009-09-15 10:16 ` paolo dot carlini at oracle dot com
2009-09-15 14:16 ` paolo dot carlini at oracle dot com
2009-09-15 14:33 ` potswa at mac dot com
2009-09-15 14:41 ` paolo dot carlini at oracle dot com
2009-09-15 14:45 ` chris at bubblescope dot net
2009-09-15 14:53 ` paolo dot carlini at oracle dot com
2009-09-15 14:56 ` potswa at mac dot com
2009-09-15 15:04 ` paolo dot carlini at oracle dot com
2009-09-15 15:29 ` potswa at mac dot com
2009-09-15 15:37 ` paolo dot carlini at oracle dot com
2009-09-23 21:08 ` potswa at mac dot com
2009-10-04 21:51 ` chris at bubblescope dot net
2009-10-04 23:33 ` paolo dot carlini at oracle dot com
2009-10-05  5:02 ` potswa at mac dot com
2009-10-05  9:08 ` paolo dot carlini at oracle dot com
2009-10-07 19:58 ` potswa at mac dot com
2009-10-07 20:25 ` paolo dot carlini at oracle dot com
2009-10-10  1:15 ` potswa at mac dot com
2009-10-17 20:45 ` potswa at mac dot com
2009-10-22 18:18 ` paolo dot carlini at oracle dot com
2009-10-30  2:47 ` potswa at mac dot com
2009-10-30  2:52 ` paolo dot carlini at oracle dot com
2009-10-30  3:56 ` potswa at mac dot com
2009-10-30  3:56 ` potswa at mac dot com
2009-10-30  4:21 ` paolo dot carlini at oracle dot com
2009-10-30 16:31 ` paolo dot carlini at oracle dot com
2009-10-30 19:07 ` potswa at mac dot com
2009-10-30 19:14 ` potswa at mac dot com
2009-10-30 19:39 ` paolo dot carlini at oracle dot com
2009-11-03  3:56 ` potswa at mac dot com
2009-11-03 12:38 ` paolo dot carlini at oracle dot com
2009-11-03 12:38 ` paolo dot carlini at oracle dot com
2009-11-03 15:34 ` paolo dot carlini at oracle dot com
2009-11-03 17:21 ` potswa at mac dot com
2009-11-03 17:33 ` paolo dot carlini at oracle dot com
2009-11-03 17:36 ` paolo dot carlini at oracle dot com
2009-11-03 17:53 ` potswa at mac dot com
2009-11-03 17:56 ` paolo dot carlini at oracle dot com
2009-11-03 18:17 ` paolo at gcc dot gnu dot org
2009-11-03 18:18 ` paolo dot carlini at oracle dot com
2009-11-03 20:43 ` potswa at mac dot com
2009-11-03 20:51 ` paolo dot carlini at oracle dot com
2009-11-03 21:01 ` potswa at mac dot com
2009-11-03 21:36 ` paolo dot carlini at oracle dot com

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