एक प्रकार कक्षा मैं कच्चे भंडारण पर काम कर रहा हूँ में एक चार सरणी है संग्रहीत वस्तु प्राप्त करने के लिए:reinterpret_cast/static_cast और अपरिभाषित व्यवहार
template<class X>
const X &get()
{
// ...
return *reinterpret_cast<X *>(storage);
// ...
}
ऐसा लगता है लेकिन यह हमेशा अच्छी तरह परिभाषित है? मैं पॉइंटर को सुरक्षित रूप से संदर्भित करने के बारे में चिंतित हूं (क्या यह टाइप एलियासिंग नियमों द्वारा अनुमत है?)।
https://stackoverflow.com/a/7321815/3235496 (देखें James Kanze की टिप्पणी):
वर्तमान कार्यान्वयन और
return *static_cast<const X *>(static_cast<const void *>(storage));
संबंधित प्रश्न/उत्तर के बीच कोई अंतर है। C++ When should we prefer to use a two chained static_cast over reinterpret_cast
निश्चित रूप से यह 'नया (भंडारण) एक्स (एक्स);' एक स्मृति रिसाव –
@EdHeal यह प्लेसमेंट नए के माध्यम से भंडारण में एक्स बनाता है। यह गठबंधन भंडारण के लिए एक सुरक्षित अभ्यास होना चाहिए (उदा। Http://stackoverflow.com/questions/4583125/char-array-as-storage-for-placement- new)। क्या आप कुछ विवरण जोड़ सकते हैं? – manlio