boostorg / boostorg/core

boost::core::string_view gives ambiguous error

Offen
#167 3 Kommentare 0 Reaktionen 0 zugewiesene Personen Auf GitHub ansehen
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

Neue Issues direkt in Ihr Postfach

Eine kurze Übersicht über anfängerfreundliche GitHub-Issues.