#include <iostream>

class Borrowed {
    int& value_;

public:
    explicit Borrowed(int& value) : value_{value} {
    }

    int read() {
        return value_;
    }

    void set(int next) {
        value_ = next;
    }
};

int main() {
    int x{4};
    {
        Borrowed view{x};
        x = 7;
        std::cout << view.read() << '\n';
        view.set(9);
        std::cout << x << '\n';
    }
    return 0;
}
