なんか自分が原因で荒れてしまったようですみません
というか質問スレがあったんですね・・・そちらで聞くべきでしたか

つまり、右辺値は関数の呼び出し側も受け手側も std::move を使うということでしょうか?

struct X {} ;

template < typename T >
void f( T && t )
{
  if ( std::is_lvalue_reference<T>::value )
    X x( t ) ; //・・・�@はこっちにくる
  else
    X x( std::move(t) ) ; //・・・�Aはこっち
}

int main()
{
  X x ;
  X y ;
  f( x ) ; //・・・�@
  f( std::move( y ) ) ; //・・・�A
}