stl_construct.h में निम्नलिखित कार्य हैं:

template<typename _T1, typename _T2>
inline void
_Construct(_T1* __p, const _T2& __value)
{
   ::new(static_cast<void*>(__p)) _T1(__value);
}

मैं जानना चाहता हूं कि __p से void* को कास्ट करना क्यों आवश्यक है, क्या इसका कोई फायदा है?

23
icecity96 5 जुलाई 2016, 04:01

3 जवाब

सबसे बढ़िया उत्तर

यह गारंटी देता है कि हस्ताक्षर void* operator new(std::size_t, _T1*) के साथ उपयोगकर्ता कोड द्वारा वैश्विक नाम स्थान में जोड़े गए किसी भी अधिभार के बजाय पूर्व-निर्धारित प्लेसमेंट नए ऑपरेटर को बुलाया जाता है।

24
Brian 5 जुलाई 2016, 04:25

यह सुनिश्चित करता है कि संभावित रूप से _T1* कास्ट ऑपरेटर अनजाने में निष्पादित नहीं होता है

3
Soren 5 जुलाई 2016, 04:17

यह सुनिश्चित करता है कि कोई भी void* operator new(size_t, _T1*); उस नए प्लेसमेंट के रास्ते में न आए जिसे वह करने का प्रयास कर रहा है।

2
evan 5 जुलाई 2016, 04:26