boostorg / boostorg/program_options

Compilation failure with Clang 17 and `-std=cpp23`

オープン
#137 コメント 2 件 リアクション 0 件 担当者 0 名 GitHub で見る
主要言語
C++
スター
136
フォーク
117
PR マージ指標
30日以内にマージされた PR はありません

説明

## Summary

Including `` causes a compilation failure when compiling with clang 17.0.6 and GNU stdlibc++ 14 with `-std=gnu++23`

## Steps to reproduce

Install boost (a conanfile is provided) and extract the attached archive.

[boost-po-test.tar.gz](https://github.com/user-attachments/files/15748101/boost-po-test.tar.gz)

```
tar -xf boost-po-test-tgz
cd boost-po-test/
cmake --preset default
cmake --build build/default
```

## Expected result

compilation is successful

## Actual result

compilation fails with

```
/usr/bin/../lib64/gcc/x86_64-pc-linux-gnu/14.1.1/../../../../include/c++/14.1.1/tuple:956:36: error: no matching function for call to 'get'
956 | return __convertible(std::declval<_UTuple>()))...>();
```

## Workaround

Edit the `CMakeLists.txt` file and change

```
set(CMAKE_CXX_STANDARD 23)
```
to
```
set(CMAKE_CXX_STANDARD 20)
```

and recompile.

## System Info

Boost 1.85.0 (conan)
Arch Linux
Clang 17.0.6
GCC 14.1.1

コントリビューションガイド

このリポジトリのコントリビューションガイドは索引されていません

調査の方向性

添付されたアーカイブを展開し、Clang 17、GCC 14、C++23 を使用して文書化された cmake preset を実行し、boost/program_options.hpp に起因する失敗を再現します。C++20 でのビルドと比較してから、報告された tuple/get 診断に関係する program_options ヘッダーを調査します。報告された C++23 構成で、workaround を必要とせずに再現ビルドが正常にコンパイルできれば完了です。

索引モデルが issue の本文から書いたものです。

評価

技術スタック
cmake, cpp
領域
build-system, compilers
issue の種類
バグ
難易度
4/5
見積もり時間
3〜5日
活発さ
停滞
明瞭さ
おおむね明確
初心者へのやさしさ
35/100

新しい issue をメールで受け取る

初心者向けの GitHub issue を短くまとめたダイジェスト。