2017-06-19 12 views
14

सी ++ 1z के बाद से, हमारे पास std::string_view है, जो कि अक्षरों के एक अनुक्रमिक अनुक्रम में हल्के वजन वाले दृश्य हैं जो डेटा की अनावश्यक प्रतिलिपि से बचाता है। const std::string& पैरामीटर होने के बजाय, अब इसे std::string_view का उपयोग करने की अक्सर अनुशंसा की जाती है।std :: string और std :: string_view को संयोजित करने के लिए कोई समर्थन क्यों नहीं है?

हालांकि, एक जल्दी से पता चल गया के रूप में वहाँ std::string और std::string_view श्रृंखलाबद्ध लिए कोई समर्थन नहीं है कि स्ट्रिंग संयोजन का उपयोग करता है const std::string&std::string_view को टूटता कोड से स्विच:

std::string{"abc"} + std::string_view{"def"}; // ill-formed (fails to compile) 
std::string_view{"abc"} + std::string{"def"}; // ill-formed (fails to compile) 

क्यों std::string और std::string_view श्रृंखलाबद्ध लिए कोई समर्थन नहीं है मानक में?

+10

अधिकतर एक निरीक्षण की संभावना है। उस ने कहा, कोड काम करने के लिए 'ऑपरेटर +' जोड़ने में ज्यादा कुछ नहीं लगता है। – NathanOliver

+5

बस यह पाया गया: https://groups.google.com/a/isocpp.org/forum/#!topic/std-proposals/1RcShRhrmRc – NathanOliver

+0

मुझे जो भी याद आती है वह std :: basic_string का सदस्य फ़ंक्शन है जो std देता है :: उप-स्ट्रिंग का मूल_स्ट्रिंग_व्यू ("सबस्ट्र" सदस्य फ़ंक्शन के समान), शायद "substr_view" नाम दिया गया है। – CAF

उत्तर

2

इस का कारण यह जेफरी Yasskin द्वारा n3512 string_ref: a non-owning reference to a string, revision 2 में दी गई है:

मैं भी ऑपरेटर + (basic_string, basic_string_ref) छोड़े गए क्योंकि LLVM इस अधिभार से एक हल्के ऑब्जेक्ट और केवल lazily संयोजन करता है। अगर हम इस अधिभार को परिभाषित करते हैं, तो हमें बाद में उस हल्के कॉन्सटेनेशन को पेश करने में कठिनाई होगी।

बाद में इन ऑपरेटर ओवरलोड को मानक में जोड़ने के लिए std-proposals मेलिंग सूची पर सुझाव दिया गया है।

+1

वाह। बस वाह! यह कुछ छोड़ने के लिए * सबसे खराब * संभावित कारण प्रतीत होता है। मानक * भाषा के अच्छे होने के लिए माना जाता है, * किसी भी विशेष कार्यान्वयन के लिए नहीं। मैं "सावधानीपूर्वक संगतता निष्पादित करता हूं" से भी सावधान हूं - क्या इसका मतलब यह है कि, क्या हमें स्मृति की कमी होनी चाहिए, मूल स्ट्रिंग में जोड़ने के लिए अपवाद * भी * स्थगित कर दिया जाएगा? मुझे यकीन है कि नरक की उम्मीद नहीं है, मैं जानना चाहता हूं कि ऑपरेशन विफल रहता है या नहीं, जब मैं इसे करता हूं, दस मिनट बाद जब मैं परिणाम तक पहुंचता हूं। – paxdiablo

+0

उम्मीद है कि कोई इन ऑपरेटरों को शामिल करने का प्रस्ताव प्रस्तुत करेगा। – vitaut

संबंधित मुद्दे