なぜ<アルゴリズム>と<ユーティリティ>の両方でのstd ::動きがあります

Iamanon:

私が見るほとんどの時間は、std::moveそれが参照しています、ここに掲載<utility>のバージョンを。

std::move<algorithm>、実際には、その名前が示唆している何を移動し、一方std::moveでは、<utility>ちょうど基本的に最終的には左辺値にはxValueを移動するための前処理段階ではxValue、にその引数をキャストします。だから、親切命名されるこれらの両方のために混乱のないmoveそれぞれの機能が異なる場合?

eerorika:

だから、一種の動き名前を付けるこれらの両方のために混乱のではないでしょうか?

それは、サポートが過負荷に言語に使用されていない特に人を混乱することができます。プログラミングのガイドラインは、一般的に別の意味を持つオーバーロードを阻止することは事実です。

これは主観的なものであるが、しかし、また、同じ名前の二つの機能があることを学ぶことは非常に難しいことではありません。異なる引数リストは、簡単に他のものを認識するのに十分なコンテキストを提供します。

なぜ両方でのstd ::動きがあると

言語の設計者は、両方の機能に同じ名前を使用することにしましたので。

std::move両方の機能を表現するための非常に簡潔な方法です。内の1つは、<algorithm>に相補的であり、std::copy同じヘッダから。

基本的に、最終的に移動させるだけの前処理工程ではxValue、にキャストでのstd ::移動引数に対し

機能が何を記述することは、関数の名前が表現できることを唯一のものではありません。この場合、名前は機能を使用し、プログラマの意図を表現する:プログラマは、引数の左辺値から移動する予定 - 可能であれば。

これは、プログラマは、潜在的にかなり頻繁に書き込む必要があるかもしれないものです。これは非常に短い名前が必要です。

おすすめ

転載: http://43.154.161.224:23101/article/api/json?id=370131&siteId=1
おすすめ