Hacktoberfest 2026: los issues que los mantenedores marcaron para octubre, abiertos y aptos para principiantes. Explorar issues de Hacktoberfest

optional::transform mandates are too strict - need to allow references

Abierto
#48 0 comentarios 0 reacciones 0 asignados Ver en GitHub

Nadie ha tomado este issue todavía.

Evaluación

Dificultad
4/5
Tiempo estimado
3-5 días
Aptitud para principiantes
42/100
Tipo de issue
Error
Claridad
Bastante claro
Estado de actividad
Estancado
Stack tecnológico
cpp
Área
api

Línea de trabajo

Comienza con el caso de prueba existente mencionado en el issue e inspecciona las restricciones de optional::transform que este ejercita. Compara la implementación con las cláusulas enlazadas del estándar de C++, especialmente con el requisito del tipo de objeto, y verifica que se acepten resultados de referencia cuando optional<T&> está permitido. Se considera terminado cuando la prueba pasa sin debilitar las demás restricciones indicadas.

Escrito por el modelo de indexación a partir del texto del issue.

Descripción

Don't overconstrain the types that can result from transform if optional<T&> is allowed.

https://eel.is/c++draft/optional#monadic-7
Let U be remove_cv_t<invoke_result_t<F, decltype(*val)>>.

https://eel.is/c++draft/optional#monadic-8
Mandates: U is a non-array object type other than in_place_t or nullopt_t. The declaration
U u(invoke(std::forward(f), *val));
is well-formed for some invented variable u.
[Note 1: There is no requirement that U is movable ([dcl.init.general]). — end note]

However, if optional<T&> is allowed, the object type requirement is too strong -- is_object_v<U> will prohibit a reference returning function creating an optional where U is a reference.

Caught by existing test case.

Lenguaje dominante
C++
Estrellas
47
Forks
25
Métricas de merge de PR
Sin PR fusionados en 30 d

Preparar el entorno

Aún no hemos revisado los archivos de configuración de este proyecto. Empieza por su README y consulta nuestra guía para la primera contribución para los pasos generales.

Primeros pasos

  1. Lee el issue completo y luego la guía de contribución del proyecto.
  2. Comenta en el issue que vas a ocuparte — evita que dos personas hagan lo mismo.
  3. Haz un fork del repositorio y trabaja en una rama.
  4. Abre un pull request que haga referencia al número del issue.

Más de bemanproject/optional

Todos los issues de bemanproject/optional

Issues similares

Más issues de C++

Recibe los nuevos issues en tu correo

Un resumen breve de issues de GitHub para principiantes.