boost::core::string_view gives ambiguous error
- Vorherrschende Sprache
- C++
- Sterne
- 156
- Forks
- 116
- PR-Merge-Kennzahlen
- Keine gemergten PRs in 30 T.
Beschreibung
(1.84 gcc 13.2)
upgrading boost from 1.75 to 1.84 breaks existing code that boils down to:
````c++
#include
struct Foo
{
Foo(std::string_view f) {}
Foo(const std::string& f) {}
};
int main() {
Foo{std::string_view()}; // works
Foo{boost::core::string_view()}; // fails
//Foo{boost::beast::http::fields{}.find("")->value()}; // same failure, works in 1.75
}
````
https://godbolt.org/z/8TKfP6Pj8
```
: In function 'int main()':
:11:39: error: call of overloaded 'Foo()' is ambiguous
11 | Foo{boost::core::string_view()};
| ^
:6:9: note: candidate: 'Foo::Foo(const std::string&)'
6 | Foo(const std::string& f) {}
| ^~~
:5:9: note: candidate: 'Foo::Foo(std::string_view)'
5 | Foo(std::string_view f) {}
| ^~~
Compiler returned: 1
```
it _used_ to work with `BOOST_BEAST_USE_STD_STRING_VIEW`. how do I get it to use `std::string_view` like before?
Beitragsleitfaden
Für dieses Repository ist kein Beitragsleitfaden indexiert
Rechercherichtung
Beginnen Sie mit dem Reproducer im Issue und untersuchen Sie boost/core/detail/string_view.hpp, wobei Sie das Verhalten von Boost 1.75 und 1.84 im Zusammenhang mit BOOST_BEAST_USE_STD_STRING_VIEW vergleichen. Führen Sie das bereitgestellte GCC 13.2-Beispiel aus, um den Fehler wegen des mehrdeutigen Konstruktors zu bestätigen. Als abgeschlossen gilt die Aufgabe, wenn die gemeldete string_view-Konstruktion nicht mehr mehrdeutig ist und das relevante bestehende Verhalten erhalten bleibt, mit einem Regressionstest, der das Beispiel abdeckt.
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
- 45/100