hubert-reinterpretcast wrote:

> With respect to the relative positioning for `2` and `3`, we have a situation 
> where all implementations behave one way and the wording implies another.

My earlier reading missed the words "before removal of placemarker tokens, 
rescanning, and further replacement" in the description of the tokens that a 
va-opt-replacement is replaced with.

The earlier example reduces to a question of whether the following should 
produce `"hi"` or `"MACRO"`:
```cpp
#define STR0(X)  #X
#define MACRO hi
#define F(...) STR0(__VA_OPT__(MACRO))
static_assert(0, F(_));
```

Producing `"MACRO"` is correct (just as `2 3` is correct in the earlier 
example).

https://github.com/llvm/llvm-project/pull/162662
_______________________________________________
cfe-commits mailing list
[email protected]
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits

Reply via email to