2016-04-18 9 views
8

बूस्ट string_view के दो विभिन्न कार्यान्वयन प्रदान करता है, जो सी ++ 17 का एक हिस्सा हो जाएगा: core/string_view.hpp मेंमतभेद :: string_view

utility/string_ref.hpp
  • boost::string_view में
    • boost::string_ref

    क्या इनके बीच कोई महत्वपूर्ण अंतर है? आगे जाने के लिए कौन सा प्राथमिकता दी जानी चाहिए?

    नोट: मैंने बूस्ट 1.61 में देखा, boost :: लॉग स्ट्रिंग_व्यू के पक्ष में string_ref को हटा दिया गया है; शायद यह एक संकेतक है? (http://www.boost.org/users/history/version_1_61_0.html)

  • उत्तर

    11

    काफी मजेदार है सही मेल खाता है:

    बढ़ावा :: string_view निम्न लाभ हैं अब मैं मार्शल क्लॉ (समिति पर स्ट्रिंग_व्यू एट अल के पीछे बल) के साथ एसीसीयू सम्मेलन में हूं और मैं सचमुच उनसे पहले बार पूछने के बारे में था, इससे पहले कि मुझे स्ट्रिंग_व्यू बनाम बजरन के बारे में उनके विचारों के बारे में बुलाया गया था ई की दिशानिर्देश समर्थन पुस्तकालय (जीएसएल) gsl::span<T> जो एक बहुत ही समान बात है (gsl-lite जीएसएल का मेरा निजी पसंदीदा कार्यान्वयन है क्योंकि यह 03 संगत है, लेकिन कई अन्य हैं)। मैंने सुना था कि उन्हें मानकीकरण के लिए एक ही कार्यान्वयन में एकीकृत किया जाना था, और gsl::span<T> दिशा भविष्य होने वाली है, लेकिन अगर मैं उस पर गलत हूं तो मैं घोड़े के मुंह से खुद यहां रिपोर्ट करूंगा। अभी के लिए, मान लें कि gsl::span<T> दिशा वर्तमान भविष्य है और बूस्ट को जल्द ही कुछ ऐसा करने के लिए अपडेट किया जाएगा, भले ही using string_view = gsl::span<char> अनिवार्य रूप से स्ट्रिंग_व्यू है।

    संपादित करें: मैंने अभी मार्शल के नीचे बात की थी। वह मुझे बताता है कि बूस्ट में कार्यान्वयन के अनुसार स्ट्रिंग_व्यू निश्चित रूप से सी ++ में है 17. array_view नहीं है, और न ही ऐतिहासिक रूप से स्ट्रिंग_व्यू के आसपास कुछ भी है।

    जीएसएल स्ट्रिंग_एसपीएन एक अलग इकाई है जो सी ++ 17 में प्रवेश करने की उम्मीद नहीं है, न ही कार्यान्वयन को एकीकृत करने के लिए कोई मौजूदा योजना है क्योंकि वे विभिन्न उपयोग मामलों को हल करते हैं, विशेष रूप से स्ट्रिंग_व्यू उधारित चरित्र सरणी का निरंतर दृश्य है, जबकि string_span उधारित वर्ण सरणी के संभावित रूप से संशोधित दृश्य होने की उम्मीद है, जिसमें नए तारों के निर्माण के लिए स्रोत के रूप में संभावित उपयोग होते हैं, इसलिए स्ट्रिंग_एसपीएन शायद भविष्य में कुछ भविष्य में C++ मानक में स्ट्रिंग_व्यू का सामान्यीकरण बन सकता है।

    +1

    FYI स्ट्रिंग_व्यू, सरणी_व्यू और अवधि पर समिति का अंतिम अपडेट फरवरी में था और http://stackoverflow.com/a/36207785/805579 पर विस्तृत है –

    4

    this email from the boost mailing list के अनुसार, boost :: string_ref भविष्य में उपयोग नहीं किया जाएगा और अन्य बूस्ट पुस्तकालयों में string_view द्वारा प्रतिस्थापित किया जा रहा है।

    • बेहतर क्या मानक समिति के लिए सी ++ 17
    • कर रहा है रास्ता अधिक constexpr समर्थन हासिल है
    +2

    "मानक मिलान समिति सी ++ 17 के लिए क्या कर रही है उससे बेहतर मिलान करता है" - विशेष रूप से, इसका मतलब क्या है (मतभेद :: string_ref को बढ़ावा देने के लिए)? – sehe