次の 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)か?
全体的な効果を何と呼びますか?
この問題を扱っている標準のセクションはどれですか?