2

以下は有効なc++です

void g() {}
void (&&r)(void) = g;

詳細については、「右辺値参照は関数にバインドできますか?」スレッドを参照してください。

私の質問は、これを可能にした理由は何ですか?

4

1 に答える 1

2

単純な関数と関数オブジェクト(ラムダを含む)との間の一貫性を提供するためだと思います。

単純な関数へのポインターまたは参照のコピーを作成すると、状態 ( staticlocals ) が共有されます。これは、移動 (古いコピーを不確定ではあるが有効な状態のままにする) と同じです。

于 2013-06-10T19:28:59.507 に答える