みんなレスありがとう

>自分で定義した変数を自分で変更してしまうのを防ぎたいってこと?

yes

関数の冒頭で宣言と初期化はするけど,それ以降は参照だけされて変更はされない
というよくあるシチュエーションを明示しておきたいんです

なので >>680 さんみたいに const を後付けしたいけど,non const を残しておきたくない…

void func_sub(const std::string& strHoge, const std::string& strFoo)
{
//処理
}

void func()
{
  std::string strHoge;
  std::string strFoo;
  bool bOk = GetPathHogeFooBar( &strHoge, &strFoo );
  func_sub( strHoge, strFoo );
}

 というわけでこういうのも考えた.やりたいことはまさにこういったことなんだが
strHoge, strFoo 以外の変数が多数あると引数の数が大変なことになるか…
やはり >>679 さんみたいなやり方のが良いかな…

>>682 Bar がいらない場合もあるんですよ.パスを分解して全部ほしいとか,フォルダだけほしいとか…