algorithm/string -- find_all_regex() gives a compiler error when the result container is vector<iterator_range<string::iterator>>
- Vorherrschende Sprache
- C++
- Sterne
- 131
- Forks
- 117
- PR-Merge-Kennzahlen
- Keine gemergten PRs in 30 T.
Beschreibung
[The doc](https://www.boost.org/doc/libs/1_77_0/doc/html/boost/algorithm/find_all_regex.html) says that the container we should pass to this function can be std::vector>. But when I run the program it gives a compile error. But when the result container passed, is a std::vector, everything works fine.
First code snippet is using std::vector> as the result.
```
#include "boost/algorithm/string/split.hpp"
#include "boost/range/iterator_range_core.hpp"
#include
#include
#include
#include
int main(int, char**) {
std::string s("Hello world");
boost::regex regex("\\w");
std::vector> result;
boost::find_all_regex(result, s, regex);
}
```
Following is the last 3 lines of the compiler error. The whole error is too long.
c:\mingw\include\c++\9.2.0\bits\stl_iterator.h:787:11: note: no known conversion for argument 1 from '__gnu_cxx::__normal_iterator >' to 'const __gnu_cxx::__normal_iterator >&'
c:\mingw\include\c++\9.2.0\bits\stl_iterator.h:787:11: note: candidate: 'constexpr __gnu_cxx::__normal_iterator >::__normal_iterator(__gnu_cxx::__normal_iterator >&&)'
c:\mingw\include\c++\9.2.0\bits\stl_iterator.h:787:11: note: no known conversion for argument 1 from '__gnu_cxx::__normal_iterator >' to '__gnu_cxx::__normal_iterator >&&'
Also I ran the same program in Clang compiler too. Still the same result.
But when I run the following program with the container as std::vector everything works without a hitch.
```
#include "boost/algorithm/string/split.hpp"
#include "boost/range/iterator_range_core.hpp"
#include
#include
#include
#include
#include
int main(int, char**) {
std::string s("Hello world");
boost::regex regex("\\w");
std::vector result;
boost::find_all_regex(result, s, regex);
}
```
Beitragsleitfaden
Für dieses Repository ist kein Beitragsleitfaden indexiert
Rechercherichtung
Beginne damit, den bereitgestellten Aufruf von boost::find_all_regex mit std::vector> nachzubilden und ihn mit dem Fall std::vector zu vergleichen. Lies die verlinkte Dokumentation zu find_all_regex und die Implementierung der Funktion; abgeschlossen ist die Aufgabe, wenn die dokumentierte Container-Diskrepanz behoben oder die Dokumentation eindeutig korrigiert wurde und das gemeldete Beispiel abgedeckt ist, sofern Tests verfügbar sind.
Vom Indexierungsmodell aus dem Issue-Text verfasst.
Bewertung
- Tech-Stack
- cpp
- Bereich
- tooling
- Issue-Typ
- Bug
- Schwierigkeit
- 3/5
- Geschätzter Aufwand
- 1-2 Tage
- Aktivitätsstatus
- Veraltet
- Klarheit
- Größtenteils klar
- Anfängerfreundlichkeit
- 35/100