次の C++11 コードはコンパイルされません。
struct T {};
void f(T&&) { }
void g(T&& t) { f(t); }
int main()
{
g(T());
}
これを行う正しい方法は次のとおりです。
void g(T&& t) { f(move(t)); }
これを正しい自然言語用語で説明するのは非常に困難です。パラメータt
は「&&」ステータスを失ったようで、std::move
.
を何と呼びますT()
かg(T())
。
を何と呼びますT&&
かg(T&& t)
。
を何と呼びますt
かg(T&& t)
。
とt
を何と呼びますか?f(t)
f(move(t))
の戻り値を何と呼びますmove(t)
か?
全体的な効果を何と呼びますか?
この問題を扱っている標準のセクションはどれですか?