F.45 needs another exception for rvalue overloads
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
- Área
- documentation
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
- Sin Dockerfile ni archivo de Docker Compose
- Sin plantilla de pull request
- Leer la guía de contribución
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.
Más de isocpp/CppCoreGuidelines
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 68/100
isocpp/CppCoreGuidelines#2205 · 8 comentarios ·
-
Dificultad 1/5 Menos de una hora Aptitud para principiantes 64/100
isocpp/CppCoreGuidelines#1649 · 3 comentarios ·
-
Dificultad 5/5 Más de una semana Aptitud para principiantes 35/100
isocpp/CppCoreGuidelines#2335 · 2 comentarios ·
-
Provide a simple GSL utility to replace `static_cast<void>`Quizá libre de nuevo @GabrielDosReis la tomó hace 218 días y no hay ningún pull request abierto. Abierto
isocpp/CppCoreGuidelines#2319 · 7 comentarios · 1 asignado ·
-
Update guidelines for existence of C++20 modulesQuizá libre de nuevo @GabrielDosReis la tomó hace 267 días y no hay ningún pull request abierto. Abierto
isocpp/CppCoreGuidelines#2295 · 1 comentario · 1 asignado ·
Todos los issues de isocpp/CppCoreGuidelines
Issues similares
-
docs(openclaw): RTK_REWRITE_HOST relaxes every default ask, not only commands no rule matchedAbiertoarea:docs documentation good first issue priority:low
Dificultad 2/5 1-3 horas Aptitud para principiantes 68/100
rtk-ai/rtk#4500 · 1 comentario ·
Los mantenedores suelen responder en 1 día
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 65/100
processing/p5.sound.js#123 ·
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 72/100
BuilderIO/agent-native#7275 ·
Los mantenedores suelen responder en 1 día
-
Dificultad 1/5 Menos de una hora Aptitud para principiantes 85/100
mealie-recipes/mealie#8681 ·
Los mantenedores suelen responder en 1 día
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 62/100
awslabs/agentcore-samples#2178 ·
Los mantenedores suelen responder en 1 día