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

F.45 needs another exception for rvalue overloads

Abierto
#2,124 0 comentarios 3 reacciones 0 asignados Ver en GitHub

Nadie ha tomado este issue todavía.

Evaluación

Dificultad
2/5
Tiempo estimado
1-3 horas
Aptitud para principiantes
38/100
Tipo de issue
Documentación
Claridad
Bien especificado
Estado de actividad
Estancado
Stack tecnológico
cpp

Línea de trabajo

Comienza por la entrada del código fuente de C++ Core Guidelines correspondiente a la regla F.45 y compara su redacción actual con la excepción propuesta. Se considerará terminado cuando la guía reconozca las sobrecargas de rvalue-reference para accesores miembro como std::get(std::tuple) y std::optional::value(), con una redacción coherente con la propuesta.

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

Descripción

F.45 is titled "Don’t return a T&&" and states:

We don’t know of any other good examples [besides std::move] of returning &&.

This is ignorant of functions such as:

The recommendations of CppCoreGuidelines shouldn't contradict common practice in modern C++ standard library features. One could argue that even the standard library uses are illegitimate and unsafe, and there is truth to that. However, the user would incur unjust cost for code such as:

// if .value() returned a value instead of an rvalue reference,
// this would unnecessarily create a temporary object
vec.emplace(get_optional().value());

The zero-overhead principle, a core design principle of the language from the very start arguably trumps the slight safety benefit of returning a value.

Proposed Changes

-We don’t know of any other good examples of returning &&.

+##### Exception
+Member accessors such as `std::get(std::tuple)`,
+or `std::optional::value()` have overloads for rvalue references,
+and those overloads return rvalue references.
+This is fine because it simply imitates what happens when accessing a member of an rvalue struct,
+or a member of an rvalue array.
Lenguaje dominante
CSS
Estrellas
45.4k
Forks
5.6k
Métricas de merge de PR
Sin PR fusionados en 30 d

Preparar el entorno

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 isocpp/CppCoreGuidelines

Todos los issues de isocpp/CppCoreGuidelines

Issues similares

Más issues de Documentation

Recibe los nuevos issues en tu correo

Un resumen breve de issues de GitHub para principiantes.