संभव डुप्लिकेट:
Returning unique_ptr from functionsमुझे unique_ptr की प्रतिलिपि बनाने की अनुमति क्यों है?
20.7.1.2 [unique.ptr.single] परिभाषित करता है इस तरह निर्माता कॉपी:
// disable copy from lvalue
unique_ptr(const unique_ptr&) = delete;
unique_ptr& operator=(const unique_ptr&) = delete;
तो, क्यों निम्नलिखित कोड compiles ठीक?
#include <memory>
#include <iostream>
std::unique_ptr<int> bar()
{
std::unique_ptr<int> p(new int(4));
return p;
}
int main()
{
auto p = bar();
std::cout<<*p<<std::endl;
}
मैं इसे इस तरह संकलित:
g++ -O3 -Wall -Wextra -pedantic -std=c++0x kel.cpp
संकलक: जी ++ संस्करण 4.6.1 20,110,908 (रेड हैट 4.6.1-9)
+1 वास्तव में हमें बता रहा है कि आप किस कंपाइलर का उपयोग कर रहे हैं और आपने कोड को कैसे संकलित किया है। StackOverflow पर एक दुर्लभ दृष्टि। –
http://stackoverflow.com/questions/4316727/returning-unique-ptr-from-functions – Sjoerd