以下のコードが動くのは、環境依存ではなく、正しい挙動ですか
その場合const性を保つために暗黙的にコピー動作に変更されているということでしょうか
これをエラーや警告を出すようにすることはできませんか
特にaut

const std::wstring STRING = L"hoge";
void f(const std::wstring &s) {}
const std::wstring & e() {return STRING;}

int main()
{
  f(L"hoge");

  auto a = e();
  a.push_back(L'a');

  std::wstring s = e();
  s.push_back(L'a');
}