- テストしにくいコードをテストする方法教えて下さい
656 :デフォルトの名無しさん[sage]:2014/11/23(日) 10:13:44.19 ID:tffEMZrq - テステス
|
- C++14/C++1z 20
95 :KUSO KOTE ◆unko./w.Osri [sage]:2014/11/23(日) 10:17:38.46 ID:tffEMZrq - >>94
decltypeはその名の通り式の値に基づくのでなく expression対象のもともとの宣言を流用するものゆえ。
|
- 【初心者歓迎】C/C++室 Ver.93【環境依存OK】
841 :KUSO KOTE ◆unko./w.Osri [sage]:2014/11/23(日) 13:34:56.32 ID:tffEMZrq - >>840
やや違います。 ローカルの変数には特別なルールがあって移動になります。 Class g_unko; Class class::makeInstance_A(){ return g_unko;//コピー Class instance(); return instance; //ムーヴ★12.8p32 Class instance2(); return std::move(instance2); //ムーヴ } ついでにさらに特別なルールがあって、二つ目と三つ目は ムーブもコピーも省略されることがあります。(12.8p31)
|
- 【初心者歓迎】C/C++室 Ver.93【環境依存OK】
842 :KUSO KOTE ◆unko./w.Osri [sage]:2014/11/23(日) 13:53:15.49 ID:tffEMZrq - 微妙に回答になってないな。
[関数<ローカル>]→(copy/move)→<テンポラリ>→(copy/move)→<rInstance> の流れに於いて、 AもBも>>841の通り [関数<ローカル>]→(move)→<チンポラリ>→(move)→<rInstance> となります。 オブジェクトは別なのでアドレスは変わりますが 内部で持っているであろう大きな実データは所有権の移動になります。 補足として、オブジェクトの生成自体を省略する機能があり AやBは [関数<ローカル>]→(move)→<rInstance> とすることが1998および2003年規格でゆるされており Aに限ってはさらに [関数<rInstanceに直接構築>]→(何もなし)→<rInstance> と省略することが2011年規格で許されています。
|