It's Barton-Nackman trick.

We can define this function outside of `basic_unique_lock`'s definition like this:
```
template<class Lockable, class LockFunctions>
inline void swap(basic_unique_lock<Lockable, LockFunctions>& l, basic_unique_lock<Lockable, LockFunctions>& r) {
  l.swap(r);
}
```
but it's too long.