सबसे अप्रिय पार्स
यह वही है "सी ++ के सबसे अप्रिय पार्स" के रूप में जाना जाता है से संबंधित है। असल में, घोषणा के रूप में संकलक द्वारा व्याख्या की जा सकती कुछ भी एक घोषणा के रूप में व्याख्या की जाएगी।
एक ही समस्या का एक और उदाहरण:
std::ifstream ifs("file.txt");
std::vector<T> v(std::istream_iterator<T>(ifs), std::istream_iterator<T>());
v
2 मानकों के साथ समारोह की घोषणा के रूप में व्याख्या की है।
वैकल्पिक हल कोष्ठकों का एक और जोड़ी को जोड़ने के लिए है:
std::vector<T> v((std::istream_iterator<T>(ifs)), std::istream_iterator<T>());
या, यदि आप सी ++ 11 और सूची-प्रारंभ (भी वर्दी प्रारंभ के रूप में जाना जाता है) उपलब्ध है:
std::vector<T> v{std::istream_iterator<T>{ifs}, std::istream_iterator<T>{}};
इसके साथ, फ़ंक्शन घोषणा के रूप में इसका कोई अर्थ नहीं हो सकता है।
किसी को इसके लिए बेहतर शीर्षक के साथ आना चाहिए, लेकिन मैं यह नहीं सोच सकता कि यह क्या होगा। खोज इंजन (ओं) की सहायता के लिए कम से कम "कन्स्ट्रक्टर" वर्तनी करें। –
और यह एक और अच्छा उदाहरण है जहां सी ++ संदर्भ संवेदनशील है। प्रश्न में उदाहरण कोड भी विफल होगा यदि 'ब्लाह' कक्षा होगी। – Albert