2010-05-05 21 views
9

मैंने देखा कि @GMan ने विविधता वाले टेम्पलेट्स के लिए a version of sizeof... लागू किया है (जहां तक ​​मैं कह सकता हूं) sizeof... में निर्मित के बराबर है। क्या यह दूसरे डिजाइन सिद्धांत के खिलाफ नहीं जाता है: prefer libraries to language extensions?सी ++ 0x में ऑपरेटर क्यों है ... ऑपरेटर?

उत्तर

7

Variadic Templates (Revision 3) (N2080=06-0150) से, पृष्ठ 6: एक आम आपरेशन

हालांकि सख्ती से आवश्यक नहीं (हम इस सुविधा के बिना count लागू कर सकते हैं), एक पैरामीटर पैक की लंबाई की जाँच है कि एक सरल वाक्यविन्यास के योग्य है। इसके अलावा, यह ऑपरेशन टाइप-जांच कारणों के लिए आवश्यक हो सकता है जब विविध टेम्पलेट अवधारणाओं के साथ संयुक्त होते हैं; धारा 3.3 देखें।

(धारा अवधारणाओं जो अब अप्रासंगिक है के बारे में 3.3 बात करती है।)

+1

'sizeof ...' भी टेम्पलेट और समारोह पैरामीटर पैक करने के लिए समान रूप से अच्छी तरह से लागू किया जा सकता। तो 'आकार ... (टी) 'और' आकार ... (टी) 'समान रूप से अच्छी तरह से काम करते हैं। लाइब्रेरी आधारित समाधान टेम्पलेट या फ़ंक्शन पैरामीटर पैक के साथ काम करेगा, लेकिन दोनों के साथ नहीं, मुझे विश्वास है। क्योंकि एक विस्तार प्रकार के अनुक्रम उत्पन्न करता है, और अन्य विस्तार अभिव्यक्ति का अनुक्रम उत्पन्न करता है। शायद इसे 'टेम्पलेट स्ट्रक्चर गिनती' के रूप में लिखना; और फिर पैक को 'गिनती ' के रूप में पास कर सकता है। चूंकि 'आकार' दोनों प्रकार और अभिव्यक्तियों को संभाल सकता है जो काम करने लगते हैं, लेकिन यह स्पष्ट रूप से उलझन में है :) –

4

sizeof... सिर्फ चीनी है, मुझे लगता है।

sizeof वास्तव में भाषा के लिए कोर के रूप में ... है, और हालांकि एक countof समारोह मौजूद हो सकता है हम पहले से ही sizeof और ... सुरक्षित तो हम साथ ही यह सुविधाजनक गिनती कि जिस तरह से प्राप्त करने के लिए कर सकता है है।

असल में, यदि sizeof और ... आरक्षित नहीं थे, तो ऐसी चीज जोड़ने का विचार संभवतः विफल हो गया था क्योंकि नए कीवर्ड पर फंसे हुए हैं। (कम बेहतर है।)

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