C++ では、変更される可能性のあるデータへの定数参照を返すのは良い考えですか? たとえば、ファンクターがあるとします。
template<class T>
struct f {
f(const T& init) data{init} {}
const T& operator() () { return ++data; }
private:
T data;
};
私の懸念の例として、関数は返されたデータのアドレスを取得できますか? これは、後で「クライアントの背後で」値が変更されたときに厄介な驚きを与えるでしょう。(または、返された参照は右辺値としてカウントされ、そのアドレスを見つけることは違法になりますか?) 私や他のクライアントは、今後どのような問題に遭遇する可能性がありますか?
tl;dr: 上記のファンクターは良いアイデアですか?