ページ 11

volatileについて

Posted: 2011年7月12日(火) 15:13
by うしお
株式会社きじねこ様のホームページ、
http://www.kijineko.co.jp/tech/cpptempl ... ndian.html
にて、エンディアンを変換するコードを見つけました。
以下の小さなテンプレート関数です。

コード:

template<class T>
T reverse_endian(T value)
{
  char volatile* first = reinterpret_cast<char volatile*>(&value);
  char volatile* last = first + sizeof(T);
  std::reverse(first, last);
  return value;
}
しかしながら、この関数になぜvolatile修飾子が必要なのか理解できません。
どなたかご教示いただけましたら幸いです。

Re: volatileについて

Posted: 2011年7月12日(火) 15:46
by たかぎ
不要ですね。
不確かな記憶をたどると、以前valueを参照渡しにしていて、volatile付きの実引数を受けるとキャストに失敗したような気がします。
ただ、volatile付きのものを参照渡しでもらうと、それはそれでいろいろ問題が出るのでやめました。
よって、現在のコードでは不要です。

Re: volatileについて

Posted: 2011年7月12日(火) 15:47
by たかぎ
修正してきました。

Re: volatileについて

Posted: 2011年7月12日(火) 16:56
by うしお
たかぎさん、ご回答、修正ありがとうございます。
修正後の関数を使っていきたいと思います^-^