[libc++] (Yet) more places to use std::addressof

Hi,

This just bit me. In lines 386 and 387 of the utility header, std::addressof should be used:

    void
    swap(pair& __p) _NOEXCEPT_(__is_nothrow_swappable<first_type>::value &&
                               __is_nothrow_swappable<second_type>::value)
    {
        _VSTD::iter_swap(&first, &__p.first);
        _VSTD::iter_swap(&second, &__p.second);
    }

Regards

Sebastian

-- Marshall

I think we can be a lot better at testing for this kind of defect by
pre-including the following operator definition
in each test.

    namespace std {
      template <class Tp>
      void operator&(Tp&&) {
static_assert(TypeDependantFalse<Tp>::value, "This operator should
never be instantiated"); }
    }

I suggest putting it in namespace std so that most uses of operator&
in the test suite continue to work.

I'll take a look at doing this and hopefully we won't run into this
kind of bug again.

/Eric