コード:
#include <memory>
#include <iostream>
void main()
{
auto created_num_ptr = std::make_unique<int>(365);
auto num_ptr = created_num_ptr;
std::cout << *num_ptr.get();
}
上記はコンパイルできないのに、
コード:
#include <memory>
#include <iostream>
std::unique_ptr<int> create()
{
return std::make_unique<int>(365);
}
void main()
{
auto num_ptr = create();
std::cout << *num_ptr.get();
}
上記はコンパイルできます。
関数の戻り値はコピーされたオブジェクトが返されるのではないのでしょうか?
関数の戻り値渡しでのコピーではコピーコンストラクタは呼ばれないのでしょうか?