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

Incorrect behavior of reversed_range with -O2 g++ option

Abierto
#82 5 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
tooling

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

  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 boostorg/range

Todos los issues de boostorg/range

Issues similares

Más issues de C++

Recibe los nuevos issues en tu correo

Un resumen breve de issues de GitHub para principiantes.