問題タブ [c++98]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
c++ - boost::assign::list_of を boost::variant で使用する
与えられた:
c
ワンライナーとして初期化するにはどうすればよいですか?
c++ - マクロで static_assert を行うには?
この提案を使用して静的アサートを実行しようとしましたが、テンプレートのメソッド内で使用してもコンパイル エラーは発生しません。
例は次のとおりです。
VLA は c++ ISO でサポートされていないという警告とともに、g++ 4.7.2 でコンパイルしました。
では、テンプレート メソッド内で STATIC_ASSERT を使用すると、コンパイルが失敗しないのはなぜでしょうか? 失敗させる方法はありますか?
注:可能であれば、マクロのみで、c++98(おそらくc++03)ソリューションが必要です。
c++ - C++98 標準を使用して記述されたコードは、新しいコンパイラでコンパイルされますか?
C++98 標準で記述されたコードは、g++ などの新しいコンパイラで動作します。または、機能しません。単純な「Hello World」プログラムは機能すると思われますが、複雑なコマンド ライン プログラムはどうでしょうか。
c++ - C++98/03 参照の折りたたみと cv 修飾子
以下のコードはコンパイル (gcc 4.7.2 または icc 13) し、「1 2」出力を生成します。これは、const
修飾子が削除されたことを意味します。つまり、f<int&>
パラメーター type がありますint&
。
なぜそれが起こるのですか?私が理解しているように、§14.3.1.4 によると:
template-parameter のテンプレート引数が
T
型「cv1 への参照」を指定する場合、型「cv2S
への参照」を作成しようとすると、型「cv12T
への参照」が作成されますS
。ここで、cv12は cv 修飾子 cv1 の和集合です。およびcv2。冗長な cv 修飾子は無視されます。
const
落としてはいけません。コードは次のとおりです。
c++ - 何かが他の何かへの参照であるかどうかをテストする
私が持っているとしましょう:
このようなテストを行うにはどうすればよいですか?
これは、コードを単体テストする人にとって一般的な問題だと思います。
c++ - boost::variant メンバー 別の boost::variant のサブセット
コレクションを保存するためのかなり扱いにくいcインターフェイスを使用しています。このクラスLowLevelStorer
は、このインターフェイス用に記述したラッパーを表します。このStorer
クラスは、 に関係する高レベルのクラスData
です。キャッシングを行い、データを だけが知っているより複雑なデータ型にバンドルしますLowLevelStorer
。私のコードの残りの部分はData
、LowLevelData
.
以下のコード例では、バリアントのメンバーがData
バリアントに含まれるようにしLowLevelData
ます。これを他の方法で指定する方法はありますか?
私が本当に理解していないのは、以下のコードがコンパイルされる理由と、実際に実際に正しく動作する理由です。つまりvoid operator()(const SimplePath&, const Data& data) const
、 Data 参照を取りますが、呼び出し時に LowLevelData オブジェクトに正しく変換しているようvoid operator()(const LowLevelData& data) const
です。どうすればいいの?
データ オブジェクトに関して、舞台裏で多くのコピーが行われていますか?
c++ - 参照によるブースト スマート ポインターの受け渡し
Container
次の関数は、コードで使用する a を、ac インターフェイスで必要な a に変換します。boost::shared_array<CValues>&
cContainer を使用するまで関連付けられたメモリを維持する必要があるため、この関数に a を渡す必要があります。これを行うより良い方法はありますか?
c++ - boost::shared_array を反復処理する
のアイテムをどのように反復処理しますboost::shared_array
か? それを実行してget()
、生のポインタをイテレータとして使用しますか?
c++ - std::vector で検索
ペアのベクトルがあります。ペアの 1 番目は std::string 型で、2 番目は Container 型です。
文字列値をキーとして与えられたコンテナを返すことができるように、std または boost に存在する便利な機能は何ですか?
アップデート
代わりに std::map を使用できるとコメントされていますが、実際にはアイテムの順序をベクターにプッシュする順序で保持する必要があります。
c++ - boost::variant型のstd::vectorを変換します
Value
のベクトルからに変換するために、以下の関数をどのように実装できContainer
ますか?values
のすべてのメンバーが同じタイプではない場合、つまり、ベクトルに文字列とintが混在している場合は、主張したいと思います。これは、関数の戻り値がastd::vector<int>
または。のいずれかであるためstd::vector<std::string>
です。