Incorrect behavior of reversed_range with -O2 g++ option
Nadie ha tomado este issue todavía.
Evaluación
- Dificultad
- 4/5
- Tiempo estimado
- 3-5 días
- Aptitud para principiantes
- 42/100
Línea de trabajo
Comience compilando el código de ejemplo del issue con g++ o clang++ usando -O0 y -O2, y después inspeccione los puntos de entrada de reversed_range utilizados por boost::adaptors::reverse. Confirme que la compilación optimizada produce la salida esperada 2 1 0 y añada una prueba de regresión que cubra los compiladores y el nivel de optimización indicados.
Escrito por el modelo de indexación a partir del texto del issue.
Descripción
Example code:
#include "boost/iterator/counting_iterator.hpp"
#include "boost/range/iterator_range.hpp"
#include "boost/range/adaptor/reversed.hpp"
#include <iostream>
int main(int, char **)
{
using iterator = boost::counting_iterator<int>;
using iterator_range = boost::iterator_range<iterator>;
using reversed_range = boost::reversed_range<iterator_range>;
iterator first(0), last(3);
iterator_range range(first, last);
reversed_range r_range = boost::adaptors::reverse(range);
reversed_range::const_iterator it = r_range.begin();
for (; it != r_range.end(); ++it)
std::cout << *it << " ";
std::cout << std::endl;
}
Compile with: -O2
Output: 3 integer numbers, different from run to run, similar to
22007 22007 22007
(with g++)
or
-1807142200 0 0
(with clang++)
When compiled with -O0 produces the correct output:
2 1 0
Reproducible with:
Boost 1.67.0, 1.68.0
g++ 6.4.0, 7.3.0, 8.2.0; clang++ 7.0.0-3
CPU architecture: x86-64 (Intel Xeon)
- Lenguaje dominante
- C++
- Estrellas
- 45
- Forks
- 104
- 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
- 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 boostorg/range
-
Dificultad 1/5 Menos de una hora Aptitud para principiantes 65/100
-
Dificultad 1/5 Menos de una hora Aptitud para principiantes 70/100
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 35/100
-
Dificultad 3/5 1-2 días Aptitud para principiantes 45/100
-
Dificultad 3/5 1-2 días Aptitud para principiantes 38/100
Todos los issues de boostorg/range
Issues similares
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 74/100
Los mantenedores suelen responder en 1 día
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 90/100
Los mantenedores suelen responder en 1 día
-
type: bug
Dificultad 2/5 1-3 horas Aptitud para principiantes 84/100
RobotLocomotion/drake#25023 ·
Los mantenedores suelen responder en 1 día
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 86/100
Los mantenedores suelen responder en 1 día
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 88/100
mamedev/mame#16263 · 4 comentarios ·
Los mantenedores suelen responder en 1 día