>>254
どこをどう数えたらswapの違いになるのか

右辺値を渡した時
 f(X p);
  関数呼び出しのムーブ生成(メモリ確保+ムーブ)
  swap内の一時オブジェクトのムーブ生成(メモリ確保+ムーブ)
  swap内のムーブ代入(破棄+ムーブ)
  swap内のムーブ代入(破棄+ムーブ)
 f(X && p);
  ムーブ代入(破棄+ムーブ)

左辺値を渡した時
 f(X p);
  関数呼び出しのコピー生成(メモリ確保+コピー)
  swap内の一時オブジェクトのムーブ生成(メモリ確保+ムーブ)
  swap内のムーブ代入(破棄+ムーブ)
  swap内のムーブ代入(破棄+ムーブ)
 f(X const & p);
  コピー代入(破棄+コピー)