boostorg / boostorg/preprocessor

msvc: `BOOST_PP_VARIADIC_SIZE` broken for size larger than 64

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

説明

```
#define BOOST_PP_LIMIT_VARIADIC 256

#include

#include

#define VAR_DATA a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, b, b, b, b, b

constexpr size_t sz = BOOST_PP_VARIADIC_SIZE(VAR_DATA);

static_assert(sz == 65);
```

gives:
```

(9): error C2065: 'b': undeclared identifier
(9): error C2131: expression did not evaluate to a constant
(9): note: a non-constant (sub-)expression was encountered
(11): error C2131: expression did not evaluate to a constant
(9): note: a non-constant (sub-)expression was encountered
```

compare: https://godbolt.org/z/bfoETMnad

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

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

調査の方向性

boost/preprocessor/variadic/size.hpp から始め、MSVC で提供された 65 引数の例を再現します。BOOST_PP_VARIADIC_SIZE が 64 を超える引数の数をどのように処理するかを追跡し、その後、例がコンパイルされ、static_assert が 65 を報告することを確認します。

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

評価

技術スタック
cpp
領域
compilers
issue の種類
バグ
難易度
3/5
見積もり時間
1〜2日
活発さ
停滞
明瞭さ
明確に書かれている
初心者へのやさしさ
52/100

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

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