मुझे enum { my_const = 123; }
के साथ मेरे स्थिरांक को परिभाषित करने के लिए उपयोग किया जाता है, क्योंकि कक्षाओं में static constexpr
का उपयोग कक्षा परिभाषा के बाहर कुछ कोड की आवश्यकता है (this question देखें)। लेकिन - समारोह निकायों में क्या? हाल ही में मैंने देख रहा है लोगों को अभी उनके कार्यों में constexpr
चर होने (यहां तक कि const
करने के लिए उन्हें वास्तव में परेशान कर नहीं), और मैं सोच रहा था कि क्या मैं एक मूर्ख है जो अपनेमुझे किसी फ़ंक्शन के भीतर निरंतर के लिए कौन सा प्राथमिकता देना चाहिए: constexpr const या enum?
int foo(int x)
{
enum : int { bar = 456 };
return x + bar;
}
तो साथ बार के पीछे कर रहा हूँ, मेरे सवाल यह है: क्या एनएक्स के कॉन्सएक्सप्रैर चर के बजाए फ़ंक्शन निकायों के उपयोग के लिए कोई लाभ है?
जब सी ++ 1z बाहर आता है (शायद यह जुलाई) और मुख्यधारा के कंपाइलर समर्थन प्राप्त करता है, तो कक्षा में 'स्थैतिक constexpr' चर का उपयोग करना संभव होगा क्योंकि वे स्वचालित रूप से इनलाइन हो जाएंगे। लेकिन कार्यों के लिए, क्या आपका मतलब है कि आप अपने स्थिरांक के लिए एक समारोह के अंदर 'enum' घोषित करते हैं? –
@DanielH: हाँ, संपादन देखें। – einpoklum
मुझे लगभग निश्चित है कि फ़ंक्शन बॉडी के अंदर कोई लाभ नहीं है (गैर स्थैतिक चर को किसी भी लिंक की आवश्यकता नहीं होगी, और स्थिर लोग स्वयं फ़ंक्शन को साझा कर सकते हैं), और वास्तव में मुझे लगता है कि C++ मानक द्वारा इसकी अनुमति नहीं है (भले ही कुछ कंपाइलर इसे विस्तार के रूप में अनुमति दे सकें)। विशेष रूप से, मुझे आपके कोड को संकलित करने के लिए g ++ (संस्करण 6.3) नहीं मिल सकता है। मैं इस टिप्पणी के बजाए इसे उत्तर देने के लिए बिल्कुल निश्चित नहीं हूं, लेकिन अगर यह गलत है तो मुझे आश्चर्य होगा। –