को देखते हुए इस टेम्पलेट जोड़ने के लिए वैकल्पिक करने के लिए enable_if का उपयोग करना:एक struct सदस्य
template <class A>
struct Something {
... // members common to all template instantiations for all A types
SpecialType member; // but not this - I want this to be conditional...
}
... मैं "enable_if" का उपयोग करने SpecialType सदस्य सशर्त मौजूद करना चाहते हैं; यही वह समय है जब टेम्पलेट को ए = स्पेशलकेस 1 या स्पेशलकेस 2 प्रकारों के साथ तुरंत चालू किया जाता है। अन्य सभी मामलों में, मैं चाहता हूं कि स्पेशलटाइप सदस्य गुम हो जाए।
यदि आप सोच रहे हैं कि यह अनुकूलन के बारे में है - यानी संरचना में बेकार पेलोड नहीं ले रहा है। मैं टेम्पलेट मेटाप्रोग्रामिंग में नौसिखिया हूं, लेकिन मुझे समझ में आता है कि मुझे किसी भी तरह "enable_if" और दो "is_same" की ज़रूरत है - यह सुनिश्चित नहीं है कि कैसे ...
संपादित करें: जेनेरिक सी ++ (यानी बूस्ट-विनिर्देशों के बिना) एक प्लस होगा।
पर सुझाया है, 'if_' को आमतौर पर 'std :: conditional' कहा जाता है। –
@ केरेकस्क: आह धन्यवाद, मैं कुछ हद तक पुराना टाइमर हूं, मुझे डर है। बूस्ट एमपीएल में यह 'if_' था :) मैंने अभी तक सी ++ 11 नई पुस्तकालयों में बहुत कुछ खोला नहीं है:/ –