एक ऐसी अवधारणा कैसे लिखें जो लैंड के लिए रेंज-आधारित प्रकारों का वर्णन करेगी?एक साधारण रेंज अवधारणा कैसे लिखें?
ही एक प्रयास है:
template < typename Range > concept bool RRange
= requires(Range range) {{std::begin(range),std::end(range)};};
लेकिन क्या मैं वास्तव में चाहते हैं इस तरह की कुछ बात है:
template < typename Range > concept bool RRange
= requires(Range range) {{for(auto&& item : range);};}; // compile error
है कि, RRange
सभी प्रकार की अवधारणा अभिव्यक्ति for(auto&& item : range);
के लिए मान्य है होना करने के लिए । इस लक्ष्य को हासिल करने का सबसे अच्छा तरीका क्या है?
मैं g++ -std=c++1z -fconcepts
के साथ जीसीसी 7 स्नैपशॉट का उपयोग कर रहा हूं।
ऐसा नहीं है कि वजह से कैसे कल्पना लिखा है करने के लिए एक चेतावनी जोड़ने के लिए अच्छा है, उपयोगकर्ता कोड केवल अवधारणा-ifying पर एक सबसे अच्छा प्रयास का प्रयास कर सकते हैं यह भाषा सुविधा (हालांकि एक बहुत अच्छा है)। वहां (बहुत) पैथोलॉजिकल एज केस हैं जिन्हें पकड़ा नहीं जा सकता है। –
@ ल्यूकडैंटन मैंने नामित चर पर काम करने के लिए अवधारणा को फिर से लिखा है, जैसा कि श्रेणी-अर्थशास्त्र के लिए आवश्यक है। हालांकि, जोड़ा गया परीक्षण केस विफल रहता है, और मुझे नहीं पता क्यों। क्या यह एक बढ़िया मामला हो सकता है, जैसा कि आपने पहले उल्लेख किया था? –
मुझे पिछले समाधान के साथ नए टेस्ट केस का परीक्षण छोड़ना नहीं चाहिए था। मैंने इसे जोड़ा 'declref' संकेत के माध्यम से तय कर दिया है। हरचीज के लिए धन्यवाद। –