2011-03-23 21 views

उत्तर

9

Boost Coding Guidelines for Integral Constant Expressions से एक अंश:

अभिन्न निरंतर भाव में तार्किक ऑपरेटरों उपयोग न करें; इसके बजाय टेम्पलेट मेटा प्रोग्रामिंग का उपयोग करें।

INTEGRAL_CONSTANT1 || INTEGRAL_CONSTANT2

उपयोग::

::boost::type_traits::ice_or<INTEGRAL_CONSTANT1,INTEGRAL_CONSTANT2>::value

हैडर, उदाहरण के लिए के बजाय वैकल्पिक हल टेम्पलेट्स के एक नंबर, कि तार्किक ऑपरेटरों की भूमिका को पूरा होता है

तर्क: कई कंपाइलर्स (विशेष रूप से बोर्लैंड और माइक्रोसॉफ्ट कंपाइलर्स), तार्किक ऑपरेटरों को वास्तविक अभिन्न निरंतर अभिव्यक्ति के रूप में शामिल अभिन्न निरंतर अभिव्यक्तियों को पहचानने की प्रवृत्ति नहीं रखते हैं। समस्या आम तौर पर तब दिखाई देती है जब अभिन्न निरंतर अभिव्यक्ति टेम्पलेट कोड के अंदर गहरी घोंसला होती है, और पुन: उत्पन्न और निदान करना मुश्किल होता है।

तो मैं कभी भी एक अनुपालन संकलक पर नहीं कहूंगा। (लेकिन यदि आपको गैर-अनुपालन कंपाइलर्स का समर्थन करने की आवश्यकता है, तो इसका उपयोग करें।)

+0

"विशेष रूप से बोर्लैंड और ** माइक्रोसॉफ्ट ** कंपाइलर्स" ओह श ...! वीएस 210 यहाँ। : | उस स्निपेट को उपलब्ध कराने के लिए धन्यवाद! – Xeo

+1

@Xeo: कोई समस्या नहीं। यह शर्म की बात है कि वे कंपाइलर्स की सूची नहीं देते हैं, लेकिन मुझे सच में संदेह है कि वीसी -2010 को इसकी आवश्यकता है। – GManNickG

+3

@Xeo - वे निश्चित रूप से वीसी 6 का मतलब है जो बहुत व्यापक रूप से उपयोग किए जाने और बहुत पूर्व मानक होने के लिए कुख्यात है। वीएस -2010 में ऐसी कोई समस्या नहीं है। –