मैं C ++ प्रोग्रामिंग लैंग्वेज, 4th एडिशन ( Bjarne Stroustrup द्वारा ) के बारे में पढ़ रहा हूँतर्क पर निर्भर-देखने। यहाँ बोली (26.3.6, अतिशयोक्तिपूर्ण ADL) है:
तर्क-निर्भरता देखने (अक्सर ADL के रूप में संदर्भित) वर्बोसिटी (14.2.4) से बचने के लिए बहुत उपयोगी है। उदाहरण के लिए:
#include <iostream> int main() { std::cout << "Hello, world" << endl; // OK because of ADL }
तर्क-निर्भर लुकअप के बिना,
endl
मैनिपुलेटर नहीं मिलेगा। यह, संकलक नोटिस के रूप में करने के लिए कि पहले तर्क<<
एक हैostream
में परिभाषित कियाstd
। इसलिए, यह खोजताendl
हैstd
और इसे (में<iostream>
) पाता है ।
और यहाँ संकलक द्वारा उत्पादित परिणाम (C ++ 11 मोड):
prog.cpp: In function ‘int main()’:
prog.cpp:4:36: error: ‘endl’ was not declared in this scope
std::cout << "Hello, world" << endl;
^
या तो यह कंपाइलर या किताब में एक बग है। मानक क्या कहता है?
अपडेट करें:
मुझे थोड़ा स्पष्ट करने की आवश्यकता है। मुझे पता है कि सही उत्तर का उपयोग करना है std::endl
। प्रश्न पुस्तक में पाठ के बारे में था। जैसा कि लछलन ईस्टन ने पहले ही कहा था, यह केवल एक टाइपो नहीं है। पूरा पैराग्राफ (शायद) गलत है। मैं इस तरह की त्रुटि को स्वीकार कर सकता हूं यदि पुस्तक एक अन्य (कम ज्ञात) लेखक द्वारा है, लेकिन मैं संदेह में था (और अभी भी हूं) क्योंकि यह बज़्ने द्वारा लिखा गया था।
std::endl
कोई बग नहीं