1

ブースト anyおよび実験的 anyに関するドキュメントを読んでいる間、型消去
についての言及は見当たりませんでした。

C++に適用される「型消去」の概念を理解しようとしています。

「any」型は値を格納するときに「型消去」を使用するというのは正しいですか?
値を格納するときに「ポリモーフィズム」を使用するというのは正しいですか?
「型消去」は一種の「ポリモーフィズム」ですか?

ポリモーフィズムに関するウィキペディアの記事にも、「型消去」については言及されていません。
「サブタイピング」について言及しています。「型消去」は一種の「サブタイピング」ですか?

この質問が別の方向に向かっているように思われる場合は申し訳ありません。

要約する、

「型消去」、「ポリモーフシム」、および「サブタイピング」は、C ++の任意の型とどのように関係していますか?

4

1 に答える 1

1

「any」型は値を格納するときに「型消去」を使用するというのは正しいですか?

私と他の人は「型消去」の定義が異なるかもしれませんが、型消去を使用して実装anyすることは私には意味がありません。「単一のジェネリック インターフェイスを介してさまざまな型を表す」という定義を使用すると、anystd::function、 などが当てはまります。ウィキペディアの定義「プログラムのランタイム実行が型情報に依存しないことを保証する」は、C++ のコンテキストでは意味がありません。ジェネリック (型消去の典型的な例) は、「言語から型を削除する」という意味ではありません。また、std::any(オプションで) RTTI を使用します。だから私はウィキペディア以外を見ます。

値を格納するときに「ポリモーフィズム」を使用するというのは正しいですか?

ポリモーフィズムは、 を実装する 1 つの方法ですany。ただし、決して必須ではありません。私が知る限り、Boost だけがポリモーフィズムを使用しています。この回答を参照してください。

ブースト

他の実装では、必須ではないことが示されています。

libc++

libstdc++

thisとそれに付随する質問も参照してください

「型消去」は一種の「ポリモーフィズム」ですか?

いいえ。テンプレート、ジェネリック、およびstd::functionすべてをポリモーフィズムと見なしますか?

于 2016-05-14T21:24:38.020 に答える