boostorg / boostorg/preprocessor

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

Ouverte
#25 7 commentaires 0 réactions 0 personnes assignées Voir sur GitHub
Langage dominant
C++
Étoiles
118
Forks
76
Métriques de merge des PR
Aucune PR mergée en 30 j

Description

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 `

Guide de contribution

Aucun guide de contribution indexé pour ce dépôt

Piste de recherche

Reproduire l’exemple de macro présenté avec VS2017 et `/experimental:preprocessor`, puis examiner `` et son utilisation depuis ``. Le travail est terminé lorsque les directives include concernées compilent sous VS2017 tout en préservant le comportement existant sous VS2019.

Rédigé par le modèle d'indexation à partir du texte de l'issue.

Évaluation

Stack technique
cpp
Domaine
compilers
Type d'issue
Bug
Difficulté
4/5
Temps estimé
3-5 jours
Activité
À l'abandon
Clarté
Plutôt claire
Accessibilité débutants
45/100

Recevez les nouvelles issues par e-mail

Un résumé court des issues GitHub adaptées aux débutants.