v2: Moves change from std::indirect to std::__indirect to first patch, so second patch is plain move, without sneaky changes. Patch 3 is not modified.
I haven't implemented Nathan suggestions to use enum instead of bool, in my opinion this add miniscule compile time for no user benefit. And we already provide _Bind_front_t and _Bind_back_t aliases that should be used instead of _Binder directly.