在 C++ 中,返回对可能更改的数据的常量引用是个好主意吗?例如,假设你有一个函子:
template<class T>
struct f {
f(const T& init) data{init} {}
const T& operator() () { return ++data; }
private:
T data;
};
作为我关心的一个例子,一个函数可以获取返回数据的地址吗?当值在“客户背后”发生更改时,这会带来令人讨厌的惊喜。(或者返回的引用是否计为右值,使得查找其地址是非法的?)我或其他客户可能会遇到哪些其他问题?
tl; dr:上面的函子是个好主意吗?