map-macro
map-macro copied to clipboard
Does this actually work on MSVC?
Hi, I started adding appveyor testing to my lib that was using this, and I found that msvc wouldn't work with it. I thought that I had gotten it to work when I pasted into the online compiler... but now I'm not sure of that.
I googled around and found an SO question about __VA_ARGS__
on MSVC apparently being buggy:
http://stackoverflow.com/questions/5134523/msvc-doesnt-expand-va-args-correctly http://stackoverflow.com/questions/32399191/va-args-expansion-using-msvc http://stackoverflow.com/questions/21869917/visual-studio-va-args-issue
Do you know if map macro takes this into account?
Would you potentially be interested in a patch that implements one of these workarounds if not?
I'm not really a windows person... and I'm kind of hoping that MSVC will be abandoned en masse when clang is supported in visual studio. But this shouldn't actually be that hard to fix I think...
(It may very well actually be a bug in my code unrelated to map macro, I'm not totally sure.)
I don't have a Windows box at the moment, but if you provide a pull request, I would be happy to merge it. I think the approach in visit_struct
looks reasonable. One could arguably use the VS2015 solution on all platforms, avoiding the ugly #ifdef
, since it's simple enough.
That commit didn't actually work unfortunately, I don't have a windows box either to test it right now. I plan to come back to this some time soon, or maybe over the holidays.
Seems not work under MSVC (VS2017)
It works with /Zc:preprocessor
which was added in VS 2019 / 16.5 (and a little earlier as /experimental:preprocessor
).