俺も右辺値参照いまいちよくわかってないんだけど、

doubleとかを返す関数で、return前に

double calc() {
  double&& res = ...
  return std::move(res);
}
は意味ないよね?

std::vector<double> calc() {
  std::vector<double>&& res = {};
  //ごにょごにょ
  return std::move(res);
};
も意味ないよね?

const std::vector<double>& calc() {
  std::vector<double>&& res = {};
  //ごにょごにょ
  return std::move(res);
};
は意味ある

でも、
std::vector<double> v = calc();
だと結局コピーが起きてもったいない?
const std::vector<double>& v = calc();
だと意味ある

こんな認識なんだけど正しいのだろうか