Можно ли определить функцию, которая будет указывать аргумент на другой (уже существующий) объект после его возврата без использования указателей и т. Д.? Опять же, это не может просто изменить существующий объект с помощью конструктора копирования или оператора присваивания или чего-то еще. Внешний объект будет ссылаться на другой блок памяти при возврате функции.
Например:
int x;
void change(int& blah) {
blah = x; // I don't want to change blah's value to x's value, I want to make blah refer to x outside the function
}
void main() {
int something = 0;
change(something);
assert(&x == &something);
}
Независимо от используемого метода, функция должна вызываться как
change(x);
Без применения какого-либо специального оператора или функции к аргументу перед вызовом функции. Я не знаю, возможно ли это, но если бы это было возможно, это сделало бы очень крутые вещи возможными. Если нет, я также хотел бы знать, почему.