एक रावल्यू संदर्भ का पता लेने का क्या अर्थ है?
void foo(int&& x) {
std::cout << &x;
}
यह काम करता है, लेकिन यह पता वास्तव में क्या दर्शाता है यह देखते हुए? क्या एक अस्थायी int
बनाया गया है जब foo कहा जाता है और यह पता क्या है? यदि यह सत्य है और यदि मैं int y = 5; foo(static_cast<int&&>(y));
लिखता हूं, तो क्या यह एक और अस्थायी बनने का कारण बनता है या संकलक बुद्धिमानी से वाई को संदर्भित करेगा?
अस्थायी नहीं होना चाहिए। कुछ भी आपको int int = 42 करने से रोकता है; foo (x); ' –
FWIW, आपकी कास्ट बस' std :: move (y) 'है। – chris
@IgorTandetnik, यह संकलित नहीं होगा क्योंकि रैवल संदर्भ संदर्भों से बंधे नहीं हैं। – chris