「The C++ Programming language 4th edition」の次の関数テンプレートがあるとします。
template <typename TT, typename A>
unique_ptr<TT> make_unique(int i, A && a)
{
return unique_ptr<TT>{new TT{ i, std::forward<A>(a) }};
}
それが実際に何をするのかを理解するのは難しいと思いますが、
a は間違いなく右辺値であるため、make_unique 関数はそのコンテンツをヒープに割り当て、そのアドレスを unique_ptr に保持しているように見えるため、削除について心配する必要はありません。しかし、標準ライブラリの forward 関数は何をするのでしょうか? (右辺値と関係があると思います)C++のドキュメントを読んでみましたが、それを正しく理解していないようです。より経験豊富な C++ プログラマーから適切な説明を得たいと思っています。
ありがとう!