Hacktoberfest 2026: le issue che i maintainer hanno segnato per ottobre, aperte e adatte ai principianti. Sfoglia le issue Hacktoberfest

Range Algorithms do not compile with `std::span`

Aperta
#142 1 commento 1 reazione 0 assegnatari Vedi su GitHub

Nessuno ha ancora preso questa issue.

Valutazione

Difficoltà
3/5
Tempo stimato
1-2 giorni
Idoneità per principianti
48/100
Tipo di issue
Bug
Chiarezza
Abbastanza chiara
Stato di attività
Ferma
Stack tecnologico
cpp
Ambito
tooling

Direzione di ricerca

Inizia con l'esempio minimo collegato nell'issue e riproduci il problema in boost::range::find con std::span. Traccia la gestione dell'iteratore di range coinvolta in quel punto di ingresso; il lavoro è completo quando la chiamata a std::span mostrata compila, mentre i casi esistenti di boost::span e std::ranges continuano a funzionare.

Scritto dal modello di indicizzazione a partire dal testo della issue.

Descrizione

Algorithms like find_if do not compile when used on instances of std::span. They work with boost::span.

You can try this code on https://godbolt.org/z/Mq4GhqMYn:

#include <ranges>
#include <span>

#include <boost/core/span.hpp>
#include <boost/range/algorithm/find.hpp>

constexpr int a[] { 0, 1, 2, 3, 4, 5, 6, 7, 8 };
boost::span boost_span{a};
std::span std_span{a};

auto foo0() {
    return boost::range::find(boost_span, 2); // ok
}

auto foo1() {
    return boost::range::find(std_span, 2); // fails
}

auto foo2() {
    return std::ranges::find(boost_span, 2); // ok
}

auto foo3() {
    return std::ranges::find(std_span, 2); // ok
}

The error message is something like

error: no type named 'type' in 'struct boost::range_iterator<const std::span<const int, 9>, void>'

Lingua principale
C++
Stelle
45
Fork
104
Metriche di merge delle PR
Nessuna PR unita negli ultimi 30g

Preparare l'ambiente

Questo progetto non fornisce container di sviluppo, Dockerfile né guida per i contributori, quindi l'ambiente è a tuo carico: parti dal suo README e consulta la nostra guida al primo contributo per i passaggi generali.

Come iniziare

  1. Leggi tutta la issue e poi la guida ai contributi del progetto.
  2. Commenta sulla issue per dire che te ne occupi tu — evita che due persone facciano lo stesso lavoro.
  3. Fai un fork del repository e lavora su un branch.
  4. Apri una pull request che faccia riferimento al numero della issue.

Altre issue di boostorg/range

Tutte le issue di boostorg/range

Issue simili

Altre issue su C++

Ricevi le nuove issue nella tua casella

Un breve riepilogo di issue GitHub adatte ai principianti.