は両方std::lower_bound
& std::upper_bound
のためのサンプル例であり、それらに渡されるラムダ比較のサインに気づく -異なる比較署名:: LOWER_BOUNDここ
const auto lower_x = std::lower_bound(
points.begin(), points.end(), rec.min_corner.x,
[](const RankedPoint &rp, const double x) { return rp.point.x < x; });
const auto upper_x = std::upper_bound(
points.begin(), points.end(), rec.max_corner.x,
[](const double x, const RankedPoint &rp) { return x < rp.point.x; });
を可能推論とは何ですか署名を互いに正確に反対にすることの背後にあるか?私はこのことを認識しておらず、間違った署名を持つ明確な型の代わりにauto
を使用したときにgccをコンパイルしました(clangはしませんでした)。 10分の欲求不満を払った。
比較関数の意味は "<"より小さい必要があるためです。 – kennytm
範囲ライブラリによってこの問題が解決されます:-) – Jarod42