boostorg / boostorg/preprocessor

Result of `BOOST_PP_ARRAY_ELEM` can't be included in vs2017 using `/experimental:preprocessor` option

Abierto
#25 7 comentarios 0 reacciones 0 asignados Ver en GitHub
Lenguaje dominante
C++
Estrellas
118
Forks
76
Métricas de merge de PR
Sin PR fusionados en 30 d

Descripción

The following code does not compile under VS2017 using `/experimental:preprocessor` option:

```cpp
#include
#include

#define FOO (1,())
#define BAR BOOST_PP_ARRAY_ELEM(0, FOO)

#define HOGE_1(x) x
#define HOGE_2(x) HOGE_1(x)
#define HOGE() HOGE_2(BAR)
#define PUYO_1(x) #x
#define PUYO_2(x) PUYO_1(x)
#define PUYO() PUYO_2(BAR)

#include BAR //C2006
#include HOGE() //C2006

int main(){
std::cout << PUYO() << std::endl;
return 0;
}
```
Both `#include BAR` and `#include HOGE()` directives result in C2006 error, yet, `PUYO` macro could successfully get the string literal formed by `BAR`.
Switching to vs2019 eliminates this issue.

This issue breaks the usage of `` in `

Guía de contribución

No hay ninguna guía de contribución indexada para este repositorio

Línea de trabajo

Reproducir el ejemplo de macro mostrado con VS2017 y `/experimental:preprocessor`, y después inspeccionar `` y su uso desde ``. Se considera terminado cuando las directivas include afectadas compilen con VS2017, preservando el comportamiento existente en VS2019.

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
4/5
Tiempo estimado
3-5 días
Estado de actividad
Estancado
Claridad
Bastante claro
Aptitud para principiantes
45/100

Recibe los nuevos issues en tu correo

Un resumen breve de issues de GitHub para principiantes.