Writing to class member through const &
问题 In this example, is the c-style cast to int& followed by an assignment to kind of hack the interface of class A undefined behavior? class A { public: A() : x(0) { } ~A() { std::cout << x << std::endl; } const int& getX() { return x; } private: int x; }; int main() { A a; int& x = (int&)a.getX(); x = 17; std::cout << x << std::endl; } Output: 17 17 If so, what part of the standard can i refer to? Also, is there any reason why this compiles without warnings? (i tested with c++14 on cpp.sh with