問題タブ [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 に答える
128 参照

c++11 - boost::any_range による boost::transformed_range のランダムアクセス

いくつかのレガシー コードで (ランダム アクセス タグを使用して) 使用しようとしてboost::any_rangeいますが、ラムダが好きではないことがわかりました。コンパイル エラーは、ラムダ オブジェクトのデフォルト コンストラクターの欠如について不平を言っているようです。これは予想される動作ですか?それは設計によるものですか?私はブーストバージョン1.66のMSVC C++ 17を使用しています。

ドキュメントには、Transformed_range が入力範囲と同じカテゴリを持つことが記載されています。

https://www.boost.org/doc/libs/1_66_0/libs/range/doc/html/range/reference/adaptors/reference/transformed.html

boost::any_rangeauto を使用するだけで機能するため、問題は明らかに のどこかにあります (rngneg_auto以下を参照)。

最初の 2 つのケースでは、プログラムは出力します。

3番目はコンパイルエラーです(ラムダがデフォルトで構築できないためだと思います):