1

C++ では、変更される可能性のあるデータへの定数参照を返すのは良い考えですか? たとえば、ファンクターがあるとします。

template<class T>
struct f {
  f(const T& init) data{init} {}
  const T& operator() () { return ++data; }
private:
  T data;
};

私の懸念の例として、関数は返されたデータのアドレスを取得できますか? これは、後で「クライアントの背後で」値が変更されたときに厄介な驚きを与えるでしょう。(または、返された参照は右辺値としてカウントされ、そのアドレスを見つけることは違法になりますか?) 私や他のクライアントは、今後どのような問題に遭遇する可能性がありますか?

tl;dr: 上記のファンクターは良いアイデアですか?

4

2 に答える 2