public inbox for gcc@gcc.gnu.org
 help / color / mirror / Atom feed
* Asymmetry of user-difined swap and distance
@ 2009-08-07 18:01 Maxim Dementiev
  2009-08-07 19:11 ` Jonathan Wakely
  0 siblings, 1 reply; 3+ messages in thread
From: Maxim Dementiev @ 2009-08-07 18:01 UTC (permalink / raw)
  To: libstdc++, gcc

Hi,

Let's have a look at std::pair<>::swap and std::lower_bound<> implementations.

1. pair::swap in http://gcc.gnu.org/viewcvs/trunk/libstdc%2B%2B-v3/include/bits/stl_pair.h?view=markup

       void
       swap(pair& __p)
       {
         using std::swap;
         swap(first, __p.first);
         swap(second, __p.second);
       }

2. lower_bound in http://gcc.gnu.org/viewcvs/trunk/libstdc%2B%2B-v3/include/bits/stl_algo.h?view=markup

       _DistanceType __len = std::distance(__first, __last);

Now we need to use user-defined versions of swap and distance for corresponding types when we work with STL.

It means that swap for user types could be defined either in std namespace or in the user type namespace (argument-dependent name 
lookup).

On the other hand, distance (advance, etc.) for user types must be defined in std namespace.

How come? Why this asymmetry?

Should we always extend std namespace?

Regards,
Maxim P. Dementiev

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

end of thread, other threads:[~2009-08-07 19:11 UTC | newest]

Thread overview: 3+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2009-08-07 18:01 Asymmetry of user-difined swap and distance Maxim Dementiev
2009-08-07 19:11 ` Jonathan Wakely
2009-08-07 19:22   ` Maxim Dementiev

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