Bug in Boost.Asio strand(strand<OtherExecutor>&& other)
there is a bug in the Boost.Asio strand::strand(strand<OtherExecutor>&&
other) move constructor as it tries to do an invalid cast on the wrong
object. A friend declaration is also required to access the private members
of the other strand.
I submitted a PR https://github.com/boostorg/asio/pull/333 to address this