8

のドキュメントをstd::any_cast読んでいましたが、API のキャストが、保持されているオブジェクトまたはそれへのポインターに値を返すのは奇妙だと思います。参照を返さないのはなぜですか? 関数が非ポインター型の引数で呼び出されるたびに、コピーを作成する必要があります。

キャストのポインター バージョンは、もう少し意図を示し、もう少し明確になる可能性があることがわかりますが、返される値をこのような参照にしないのはなぜですか?

template<typename ValueType>
ValueType& any_cast(any* operand);

それ以外の

template <typename ValueType>
ValueType* any_cast(any* operand);

さらに、参照を要求しても、キャストが参照を削除し、格納されたオブジェクトにコピーを返すように見えます。ここで関数オーバーロード 1-3 の戻り値の説明を参照してください http://en.cppreference.com/w/ cpp/ユーティリティ/any/any_cast

4

1 に答える 1