// C++
#include <memory>
#include <stdio.h>
void println(const std::string& out) {
printf("%s\n", out.c_str());
fflush(stdout);
}
int main() {
// std::unique_ptr<string> hoge(new string("hoge")); と同義です。
// 型名を 2 度書くのを避け、コード上から new をなくすことができます。
auto hoge = std::make_unique<std::string>("hoge");
auto piyo = std::make_unique<std::string>("piyo");
println(*hoge); // => hoge
println(*piyo); // => piyo
hoge = std::move(piyo); // 変数 piyo にあるポインタの所有権は変数 hoge に移ります。
println(*hoge); // => piyo
println(*piyo); // 変数 piyo は初期化されてしまっているため、メモリアクセス違反が起きます。
}
Ly8gQysrCiNpbmNsdWRlIDxtZW1vcnk+CiNpbmNsdWRlIDxzdGRpby5oPgoKdm9pZCBwcmludGxuKGNvbnN0IHN0ZDo6c3RyaW5nJiBvdXQpIHsKICBwcmludGYoIiVzXG4iLCBvdXQuY19zdHIoKSk7CiAgZmZsdXNoKHN0ZG91dCk7Cn0KCmludCBtYWluKCkgewogIC8vIHN0ZDo6dW5pcXVlX3B0cjxzdHJpbmc+IGhvZ2UobmV3IHN0cmluZygiaG9nZSIpKTsg44Go5ZCM576p44Gn44GZ44CCCiAgLy8g5Z6L5ZCN44KSIDIg5bqm5pu444GP44Gu44KS6YG/44GR44CB44Kz44O844OJ5LiK44GL44KJIG5ldyDjgpLjgarjgY/jgZnjgZPjgajjgYzjgafjgY3jgb7jgZnjgIIKICBhdXRvIGhvZ2UgPSBzdGQ6Om1ha2VfdW5pcXVlPHN0ZDo6c3RyaW5nPigiaG9nZSIpOwogIGF1dG8gcGl5byA9IHN0ZDo6bWFrZV91bmlxdWU8c3RkOjpzdHJpbmc+KCJwaXlvIik7CiAgcHJpbnRsbigqaG9nZSk7ICAvLyA9PiBob2dlCiAgcHJpbnRsbigqcGl5byk7ICAvLyA9PiBwaXlvCiAgaG9nZSA9IHN0ZDo6bW92ZShwaXlvKTsgIC8vIOWkieaVsCBwaXlvIOOBq+OBguOCi+ODneOCpOODs+OCv+OBruaJgOacieaoqeOBr+WkieaVsCBob2dlIOOBq+enu+OCiuOBvuOBmeOAggogIHByaW50bG4oKmhvZ2UpOyAgLy8gPT4gcGl5bwogIHByaW50bG4oKnBpeW8pOyAgLy8g5aSJ5pWwIHBpeW8g44Gv5Yid5pyf5YyW44GV44KM44Gm44GX44G+44Gj44Gm44GE44KL44Gf44KB44CB44Oh44Oi44Oq44Ki44Kv44K744K56YGV5Y+N44GM6LW344GN44G+44GZ44CCCn0=