boost::core::string_view gives ambiguous error
Nadie ha tomado este issue todavía.
- Lenguaje dominante
- C++
- Estrellas
- 156
- Forks
- 116
- Métricas de merge de PR
- Sin PR fusionados en 30 d
Descripción
(1.84 gcc 13.2)
upgrading boost from 1.75 to 1.84 breaks existing code that boils down to:
#include <boost/core/detail/string_view.hpp>
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
<source>: In function 'int main()':
<source>:11:39: error: call of overloaded 'Foo(<brace-enclosed initializer list>)' is ambiguous
11 | Foo{boost::core::string_view()};
| ^
<source>:6:9: note: candidate: 'Foo::Foo(const std::string&)'
6 | Foo(const std::string& f) {}
| ^~~
<source>: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?
Guía de contribución
No hay ninguna guía de contribución indexada para este repositorio
Primeros pasos
- Lee el issue completo y luego la guía de contribución del proyecto.
- Comenta en el issue que vas a ocuparte — evita que dos personas hagan lo mismo.
- Haz un fork del repositorio y trabaja en una rama.
- Abre un pull request que haga referencia al número del issue.
Línea de trabajo
Comience con el reproducer del issue e inspeccione boost/core/detail/string_view.hpp, comparando el comportamiento de Boost 1.75 y 1.84 en torno a BOOST_BEAST_USE_STD_STRING_VIEW. Ejecute el ejemplo proporcionado con GCC 13.2 para confirmar el error del constructor ambiguo. La tarea estará terminada cuando la construcción de string_view indicada ya no sea ambigua y se preserve el comportamiento existente relevante, con una prueba de regresión que cubra el ejemplo.
Escrito por el modelo de indexación a partir del texto del issue.
Evaluación
- Stack tecnológico
- cpp
- Área
- tooling
- Tipo de issue
- Error
- Dificultad
- 3/5
- Tiempo estimado
- 1-2 días
- Estado de actividad
- Estancado
- Claridad
- Bastante claro
- Aptitud para principiantes
- 45/100