मैं बूस्ट प्रकार-लक्षण हेडर के माध्यम से जाने की कोशिश कर रहा हूं, और अब अनगिनत # परिभाषा द्वारा प्रदान की गई गहन अपठनीयता के कारण काफी बीमार महसूस कर रहा हूं। और फिर कुछ और # परिभाषित करें।बूस्ट टाइप_ट्रेट्स is_array
विशिष्ट होने के लिए, मुझे निम्नलिखित 3 लक्षणों के बारे में पता लगाने में दिलचस्पी है: यदि कोई प्रकार टी एक सरणी, एक वर्ग या enum है।
क्या कोई स्पष्ट पागलपन के पीछे विधि को समझने का कोई तरीका सुझा सकता है?
template<class T>
struct is_array{
static const bool value = false;
};
template<class T, std::size_t N>
struct is_array< T (&)[N] >{
static const bool value = true;
};
बस एक साधारण आंशिक विशेषज्ञता एक संदर्भ-हैं- पर: कैसे आप एक प्रकार, किसी भी प्रासंगिक पठन सामग्री आदि से विशेषता यह पता लगाने के पीछे सिद्धांत की तरह
अनगिनत ifdefs से छुटकारा पाने का एक तरीका है जो आपको परेशान करता है कोड कोड गड़बड़ी प्रीप्रोसेसर चलाने के लिए, यानी 'gcc' के साथ' -E' विकल्प का उपयोग करना है। फिर आप उस कोड को देख सकते हैं जो आपके कंपाइलर द्वारा आपके प्लेटफॉर्म के लिए संकलित किया जाएगा। आम तौर पर, एसएफआईएनएई, टेम्पलेट (आंशिक) विशेषज्ञता, और कंपाइलर-विशिष्ट एक्सटेंशन का उपयोग करके लक्षण लागू किए जाते हैं। बूस्ट हेडर में गोता लगाने के लिए –
+1। ;) मैं वास्तव में केवल उस सिफारिश की सिफारिश कर सकता हूं, विशेष रूप से बूस्ट। फ़ंक्शन हेडर जहां मेरे लिए काफी शैक्षिक है। – Xeo