OK、私は私の関数のコードを少しきれいにするために(int
、double
、CString
) 。boost :: variantロケット科学ですか? (したがって、私は単純な問題のためにそれを避けるべきですか?)
だから私は思う:小さな労働者のようなラッパーstruct
3人のメンバーなどと書くことは問題ありません。待ってください!boost::variant
は読んでいませんか?これは私が必要とするものではないでしょうか?これは、自分自身をラッパー構造体で囲むことから私を救うでしょう! (私はすでに私のプロジェクトで利用可能なブーストライブラリを持っていることに注意してください。)
をだから私は、私のブラウザを起動Chapter 28. Boost.VariantとLOにナビゲートして見よ:
バリアントクラステンプレートは、安全で汎用的ですスタックベースの弁別されたユニオンコンテナで、異種のタイプのオブジェクトを操作するための簡単なソリューションを提供します[...]
素晴らしい!正確に私が必要なもの!
しかし、それは上行く:Boost.Any対
Boost.Variant
- Boost.Anyが潜在的に困難な読み取りを回避テンプレートメタプログラミング技術(のほとんど使用しますエラーメッセージ、重要なコンパイル時プロセッサとメモリ要求)。
[...]
は "内部ヒープリミットに達した"
トラブルシューティング - マイクロソフトのVisual C++ - コンパイラオプションは/ ZmNNNは、メモリ割り当て制限を増やすことができます。 NNNはスケーリングのパーセンテージです(つまり、デフォルトの上限は100です)。 (/ ZM200を試してみてください。)
[...]
あああー。 boost :: variantを使用すると、コンパイル時間が大幅に増加し、読みにくいエラーメッセージが生成される可能性があります。誰かが私のboost :: variantの使用を共通ヘッダーに移すと、私たちのプロジェクトは突然長くコンパイルされるでしょうか? (不必要に)複雑なタイプを導入していますか?
私は私の、単純な小さな問題に対してboost::variant
を使用する必要がありますか?
どういうわけかこの答えは質問を見逃しているようです。私はブースト・バリアントがその実装/高度な機能のために過剰なものであるかどうか尋ねたと思う。その*意図された*使用は十分に明らかです。 –
どのように過度の判断をしますか?問題は、識別された共用体がどのように使用されるかを指定していません(マルチ型の戻り値用ですが、戻り値はどのように使用されますか?)。それは相対的な質問(回答は現在のプロジェクトのサイズに依存する)であり、基準値に関する情報はないため、不都合である。 – lijie