निम्न कोड संकलित क्यों करता है? यह क्लैंग और प्रिंटर first.
के साथ ठीक से चलाता है और चलाता है, लेकिन मेरा मानना है कि सही व्यवहार शिकायत करना और उचित त्रुटि जारी करना चाहिए।सी ++ std :: स्ट्रिंग प्रारंभिक का गलत व्यवहार
#include <iostream>
#include <string>
int main()
{
std::string s{ "first", "second" };
std::cout << s << std::endl;
}
यह प्रश्न this से प्रेरित है।
ऐसा इसलिए है क्योंकि "पहले" स्ट्रिंग के अंत में एक अंतर्निहित "\ 0" है .... जो 'स्ट्रिंग' ऑब्जेक्ट को अधिक वर्णों को ढूंढने से रोकने के लिए कहता है (भले ही यह संभवत: पूर्ण आवंटित हो रहा हो "दूसरा" की स्मृति) – DarthRubik
@DarthRubik: नहीं। ऐसा नहीं हो रहा है। –
अंतर्निहित समस्या [इस सवाल] के समान है (https://stackoverflow.com/questions/24112281/c11-initializer-list-fails-but-only-on-lists-of-length-2)। – chris