Add modern API based on C++26 features
Nadie ha tomado este issue todavía.
Evaluación
- Dificultad
- 5/5
- Tiempo estimado
- Más de una semana
- Aptitud para principiantes
- 25/100
Línea de trabajo
Start by reviewing the existing public program_options API and the proposed V2 API, including the listed C++26 features and backward-compatibility goal. The issue names no files or tests; the work would be complete only when the V2 API is designed, the implementation is modernized, and the new public API is exposed.
Escrito por el modelo de indexación a partir del texto del issue.
Descripción
ITNOA
There have been significant changes from C++03 to C++26 that fundamentally affect API design in C++.
Consequently, I propose designing a new API for program_options based on C++26 best practices.
Key modern C++ features we can leverage include:
- Modules: For faster build times and cleaner library exposure.
- Concepts: For improved template metaprogramming and clearer constraints.
- Contracts: For more robust code and runtime/compile-time assertions.
std::optional: For a more declarative API when handling optional values.std::variant&std::any: For type-safe, flexible option storage.- Structured Bindings: For a cleaner, more intuitive API when unpacking values.
std::span&std::string_view: For zero-copy, high-performance string and array views.std::expected: For modern, expressive error handling instead of exceptions or return codes.- Compile-Time Reflection: For smarter, automatic type inference and a significantly cleaner API footprint.
To achieve this, we should redesign the public API in a C++26-native way and modernize the underlying codebase.
To make this actionable, I suggest the following roadmap:
- Design the V2 API: Create a new, modern API namespace/module separate from the legacy API to maintain backward compatibility.
- Modernize the Codebase: Migrate the internal implementation details to C++26.
- Expose the C++26 API: Provide the new public-facing API for modern users.
- Lenguaje dominante
- C++
- Estrellas
- 136
- Forks
- 117
- Métricas de merge de PR
- Sin PR fusionados en 30 d
Guía de contribución
No hay ninguna guía de contribución indexada para este repositorio
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/program_options
-
Provide C++20 module Abierto
Dificultad 5/5 Más de una semana Aptitud para principiantes 45/100
boostorg/program_options#160 · 2 comentarios ·
-
Dificultad 3/5 1-2 días Aptitud para principiantes 45/100
boostorg/program_options#147 ·
-
Dificultad 5/5 Más de una semana Aptitud para principiantes 30/100
boostorg/program_options#146 ·
-
non static member shadows Abierto
Dificultad 2/5 1-3 horas Aptitud para principiantes 45/100
boostorg/program_options#144 ·
-
problem with different quotes Abierto
Dificultad 3/5 1-2 días Aptitud para principiantes 45/100
boostorg/program_options#142 ·
Todos los issues de boostorg/program_options
Issues similares
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 70/100
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 65/100
duckdb/duckdb-wasm#2258 ·
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 75/100
objectionary/eo-graphs#75 ·
-
Coarray integration tests carry no LABELS, so run_tests.py silently skips them under every backend Abiertocoarray
Dificultad 2/5 1-3 horas Aptitud para principiantes 70/100
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 75/100
FISCO-BCOS/FISCO-BCOS#5642 ·