問題タブ [boost-range]

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.

0 投票する
1 に答える
1352 参照

c++ - ブースト範囲アダプターで STL コンテナーを使用する場合の value_type エラー

ブースト範囲アダプターの使用を理解しようとしてきましたが、私が見つけたすべての実用的な例は、プリミティブ型の STL コンテナーのみstd::list<int>を使用し、独自のクラスを使用しようとすると、すべてがバラバラになります。

gcc 4.6/4.8 と boost 1.48/1.54/trunk を使用すると、次のコンパイル エラーが発生します。

thisへの回答でアドバイスされているように、私の定義にもかかわらず、問題を引き起こす可能性がある問題を理解してdecltypeいます。ただし、ファンクター構造体を渡せない理由や、クラスに追加の要件があるかどうかはわかりません。result_oftransformedBOOST_RESULT_OF_USE_DECLTYPEfilteredThing

0 投票する
2 に答える
215 参照

c++ - オブジェクトがブースト範囲と互換性があるかどうかをテストするメタ関数

クラスが互換性があるかどうかをテストするメタ関数クラスはありますか、またはどのように記述しboost::rangeますか? boost::enableのようなイディオムを使いたい

適切なis_range_compatibleメタ関数のために。is_containerについてはpretty_printから知っています。これは多くのケースをキャプチャしますが、boost::range.

編集これは C++03 を使用しているため、C++11 の機能にはアクセスできません。私は古い gcc 4.1 とブースト 1.51 を使用しています。

0 投票する
2 に答える
2919 参照

c++ - ブースト範囲アダプターの宣言方法 (例: map_values)

私が持っていると言う

MyClass メソッドの内部には、次のように my_map の値を反復処理する非常に便利な方法があります。

ただし、基本的に my_map | を出力する MyClass のメソッドが必要です。boost::adaptors::map_values を追加し、MyClass メソッドの外で便利な値の反復を許可します。そのようなメソッドを宣言するにはどうすればよいですか? ある種の擬似コンテナと対応するイテレータを実装する必要がありますか?それともショートカットがありますか?

0 投票する
1 に答える
472 参照

c++ - ブースト範囲が C++1y init-capture 可変ラムダで機能しない

Boost.Rangeinit-capture で C++1y ラムダを使用して、2 つのベクトルの要素ごとの差を計算したいと考えています。1 つのベクトルの固定 (つまり最初の) 要素を減算する単純なケースが機能します。ただし、反復子を 2 番目の範囲で増やして (そしてラムダを可変にして) 「ベクトル化された差」を計算しようとすると、コンパイラ エラーが発生します。サンプル コード (g++ 4.8 と Clang SVN の両方がこのコードを解析できるように、一般化されたラムダを使用しなかったことに注意してください):

ライブの例。ここで g++ と Clang の両方が文句を言います

'boost::mpl::eval_if, boost::result_of]::__lambda1(const int&)>, boost::mpl::identity >::f_ {aka struct boost::result_of] に 'type' という名前の型がありません: :__lambda1(const int&)>}' typedef typename f_::type type;

質問: 何が起こっているのですか?

0 投票する
1 に答える
237 参照

c++ - Boost.Range range_begin/end フリー関数が const 参照と非 const 参照の両方でオーバーロードされるのはなぜですか?

Boost.Rangeでこの興味深いビットを見つけました:

独立した関数range_begin/end()を提供する場合、ドキュメントには次のように記載されています。

...range_begin()および参照引数range_end()の両方に対してオーバーロードする必要がありconst ます。mutable

実際、 のデフォルトを見てみるとend.hpp、次のことがわかります。

両方のバージョンが同じ型を返すことに注意してください (ドキュメントに示されている例もこれを行っています)。Iterator

そもそもなぜ両方のオーバーロードが必要なのでしょうか? ADLを機能させるためですか?

0 投票する
2 に答える
544 参照

c++ - `end()` が実際に最後を 1 回通過したことを示す入力イテレータの例は?

私は現在、いくつかのアイデアを理解しようとしています。C++イテレータ、そして私は疑問に思っていました...

Incremental / Single Pass / Input / Output Iteratorが与えられた場合、そのような Iterator の 1 つ後ろの位置 / 要素が実際に存在するか、またはすべて InputIterator end()Iterators が「自然に」何らかの形式の特異値であるによって特別に扱われoperator==ますか?

私が言いたいのはこれだと思います: 「上向き」のForwardIteratoroperator==からのものについては、-ness に関係なく、2 つの iterator オブジェクトendが同じ要素を指しているかどうかをチェックするだけの簡単なものを持つことは完全に理にかなっています。これは InputIterator にとって理にかなっていますか?