संभव डुप्लिकेट:
make_unique and perfect forwardingक्यों सी ++ 11 `make_shared` है लेकिन` make_unique`
है क्यों सी ++ 11 एक make_shared
टेम्पलेट है, लेकिन नहीं एक make_unique
टेम्पलेट?
यह कोड को बहुत असंगत बनाता है।
auto x = make_shared<string>("abc");
auto y = unique_ptr<string>(new string("abc"));
शायद क्योंकि 'अद्वितीय' को किसी ऑब्जेक्ट को बनाने की आवश्यकता है और उन्होंने सोचा कि यह बेहतर किया गया है –
यह कोड असंगत नहीं है, यह लाइब्रेरी है। –
unique_ptr के लिए कॉपी कन्स्ट्रक्टर निजी है। तो make_unique "वापसी मूल्य अनुकूलन" के बिना काम नहीं करता है। मेरा अनुमान भाषा के अनुसार है यह अनुकूलन अनिवार्य नहीं है। – bop