boostorg / boostorg/preprocessor
msvc: `BOOST_PP_VARIADIC_SIZE` broken for size larger than 64
- 主要言語
- 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