Hacktoberfest 2026: the issues maintainers tagged for October, open and beginner-friendly. Browse Hacktoberfest issues

Add modern API based on C++26 features

Open
#159 3 comments 0 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

Assessment

Difficulty
5/5
Estimated time
Over a week
Newbie friendliness
25/100
Issue type
Feature
Clarity
Needs clarification
Activity status
Active
Tech stack
cpp
Domain
api, cli

Research direction

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.

Written by the indexing model from the issue text.

Description

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.
Dominant language
C++
Stars
136
Forks
117
PR merge metrics
No merged PRs in 30d

Contributor guide

No contributing guide indexed for this repository

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

More from boostorg/program_options

All issues in boostorg/program_options

Similar issues

More C++ issues

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.