値渡しだこれ前々回、前回の続き。可変長実引数を渡せるようになったのはいいが、今のままだと全部値渡しになっている。warn()に渡して確認してみる。warn内で使う関数群。packを展開するので、実引数の数だけCatのコピーコンストラクタが呼ばれていた(アカン)。referenceは、ほかとは少し違うという。referenceとして取り扱われる。テンプレート関数fから別の関数に引数を渡したい場合はstd::move()は、lvalueをmoveしたいときに使い、std::forward()は、テンプレート関数の引数を、そのまま別の関数に渡したい時に使う。std::forward()を使う。ほかではstd::move()を使う。referenceを返してくれる。packを展開してみる。referenceで渡されている。参考によると、リテラル文字列はメモリ上の静的な領域に置かれる静的なデータで、その寿命はプログラムが死ぬまで。こちらの記事を見つけた。rvalueはあまり意味がない。rvalueを返す関数を定義したり、std::move()をconstオブジェクトに対して呼ぶ事も出来るが、特に意味は無い。して、関数を呼び出す側が関数の戻り値のコピー対して出来る事に制限を課すんだ?どうして、変更不可能なオブジェクトをムーブしようとするんだ?どうして、変更不可能なオブジェクトをムーブしようとするんだ?はわわ・・・。referenceで書き直し。warn、halt内で使う関数群。標準エラーに出力して死ぬ。referenceで渡しているので、コピーコンストラクタが呼ばれなくなった。referenceで渡されているはず。moveしてみよう「details_debug.hpp」にテンプレート関数dust()を追加して、impl()とwarn()に手を加えた。referenceであればdust()にmoveするはず。Secret::impl(std::forward<Ts>(args)...);}「main.cpp」のmain関数を次のように変更。helloとcatをstd::move()でキャストして渡す。constructorが働いてメンバ変数mWordのポインタが移動した。referenceの両方を渡せないと困るので、しばらくはこの設計で使ってみようと思います。idiomsを見ると、再帰深度の問題もあるようです。次へ名前:投稿者名です。64字以内で入力してください。Eメール:必要な場合はEメールアドレスを入力してください(全体に公開されます)。内容:投稿する内容です。2019NARUPORTnarupoのブログおみくじ小説Webツール。