トップページ > プログラム > 2015年12月29日 > mJLVAknr

書き込み順位&時間帯一覧

37 位/212 ID中時間01234567891011121314151617181920212223Total
書き込み数0000000000000000000011002



使用した名前一覧書き込んだスレッド一覧
デフォルトの名無しさん
C++相談室 part121 [無断転載禁止]©2ch.net

書き込みレス一覧

C++相談室 part121 [無断転載禁止]©2ch.net
554 :デフォルトの名無しさん[sage]:2015/12/29(火) 20:49:36.07 ID:mJLVAknr
String &validate(String &s) {
 return s;
}

String s = String("");
String str = validate(s);
&s == &str; // true

上記のコードを右辺値に対しても実現したいのですが、C++ではそもそも可能でしょうか。
以下の方法を試しましたが、どうしてもムーブコンストラクタが必要になります

左辺のインスタンスをコピー無しでそのまま右辺に渡したいのです

String &&validate(String &&s) {
 return std::move(s);
}

String str = validate(String(""));
// コピーコンストラクタもデストラクタも呼ばれないようにしたい
C++相談室 part121 [無断転載禁止]©2ch.net
555 :デフォルトの名無しさん[sage]:2015/12/29(火) 21:03:53.91 ID:mJLVAknr
>左辺のインスタンスをコピー無しでそのまま右辺に渡したいのです
右辺のインスタンスをコピー無しでそのまま左辺に渡したいのです

右辺でインスタンスを生成している以上、アドレス上にはデータとして存在しているはずなので
C++なら何かしらの方法があると思って左辺値やらムーブセマンティックをずっと調べていたのですが
ここにきて躓いてしまいました。


※このページは、『2ちゃんねる』の書き込みを基に自動生成したものです。オリジナルはリンク先の2ちゃんねるの書き込みです。
※このサイトでオリジナルの書き込みについては対応できません。
※何か問題のある場合はメールをしてください。対応します。