18

消去削除イディオムに C++20 の制約付きアルゴリズムを使用しようとしています。

std::vector<int> v;
v.erase(std::unique(std::begin(v), std::end(v)), std::end(v));

しかし、単純な変換を行うと:

v.erase(std::ranges::unique(v), std::end(v));

引数が一致しないというエラーが表示されます。erase

error: no matching function for call to 'std::vector<int>::erase(std::ranges::borrowed_subrange_t<std::vector<int>&>, std::vector<int>::iterator)'

2 番目の引数が の場合、同様のエラーが生成されますstd::ranges::end(v)

どうすればこれを機能させることができますか?


removeの代わりに最初に使用された質問ですが、すべてのコンテナにuniqueオーバーロードされた があり、std::eraseその特定のユースケースのモチベーションが低下します。

4

3 に答える 3