.Net的な話題で恐縮ですが、C++/CLIで
#include <memory>
using namespace std;
shared_ptr<int>& f()
{
auto i = make_shared<int>(3);
return i;
}
void main()
{
shared_ptr<int> p = f();
}
を実行するとNullReferenceExceptionエラーになりました。
f()の返り値を参照じゃなくしたら正常に動いたのですが、
C++/CLIってアンマネージなものを受け取るときはコピー渡しか、
あるいはポインタ渡しにしないといけないんでしょうか?