N. I.:
NI>jazzer:
NI>>>void foo(TOnlyMovable&& object) {
NI>>> TOnlyMovable m(std::move(object));
NI>>>}
J>>А зачем здесь std::move? object ведь уже rvalue-ref
NI>Тип переменной (в частности, параметра функции) может не совпадать с типом выражения, образованного этой переменной. В данном случае тип параметра object — TOnlyMovable&&, но тип выражения object — TOnlyMovable.
NI>Выражение std::move(object) — это xvalue типа TOnlyMovable.
Я не согласен. См.
http://scottmeyers.blogspot.ru/2015/02/expressions-can-have-reference-type.html