stdに入れるのがイレギュラーなのは確かだけど、だからといって
namespace myns {
  class Class1 { ... };
  swap(Class1 &x, Class1 &y) throw();
  ...

  namespace junk {
    using std::swap;
  }
  template <class Iter> void foo(Iter s, Iter e) {
    using namespace junk;
    Iter i1, i2;
    ...
    swap(*i1, *i2);
  }
}
なんて絶対やりたくないんだけど。
やっぱりオーバーロードしようとするのが間違い?