次のコードで参照ではなく所有権を渡すことができるのはなぜですか? std::unique_ptr< car > pcar( new toyota() );
を使用すると参照を渡すことができることはわかっていますが、これが所有権の譲渡に適用されないのはなぜですか?
#include <memory>
class car{};
class toyota : public car{};
void someProcess( std::unique_ptr< car > vehicle )
{
//Ownership passed.
}
void otherProcess( std::unique_ptr< car > const & vehicle )
{
//Reference passed.
}
int main( int argc, char ** argv )
{
std::unique_ptr< toyota > pcar( new toyota() );
someProcess( std::move( pcar ) ); //Allowed to pass through car interface.
pcar.reset( new toyota() );
otherProcess( pcar ); //Compiler error, can't pass reference even when car interface is implemented.
return 0;
}