boostorg / boostorg/preprocessor
msvc: `BOOST_PP_VARIADIC_SIZE` broken for size larger than 64
- Lenguaje dominante
- C++
- Estrellas
- 118
- Forks
- 76
- Métricas de merge de PR
- Sin PR fusionados en 30 d
Descripción
```
#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
Guía de contribución
No hay ninguna guía de contribución indexada para este repositorio
Línea de trabajo
Comienza con boost/preprocessor/variadic/size.hpp y reproduce con MSVC el ejemplo proporcionado de 65 argumentos. Rastrea cómo BOOST_PP_VARIADIC_SIZE gestiona los recuentos de argumentos superiores a 64 y, a continuación, verifica que el ejemplo compile y que su static_assert indique 65.
Escrito por el modelo de indexación a partir del texto del issue.
Evaluación
- Stack tecnológico
- cpp
- Área
- compilers
- Tipo de issue
- Error
- Dificultad
- 3/5
- Tiempo estimado
- 1-2 días
- Estado de actividad
- Estancado
- Claridad
- Bien especificado
- Aptitud para principiantes
- 52/100