The use of three macros with variadic arguments was added to src/test/mempool_test.cpp in https://github.com/bitcoin/bitcoin/commit/f77e1d34fd5f17304ce319b5f962b8005592501a.
The three macros below generate a compiler error with MSVC.
#define MK_OUTPUTS(amounts...) std::vector<CAmount>{amounts}
#define MK_INPUTS(txs...) std::vector<CTransactionRef>{txs}
#define MK_INPUT_IDX(idxes...) std::vector<uint32_t>{idxes}
The easy fix is to add a ',' after the named argument as per:
#define MK_OUTPUTS(amounts,...) std::vector<CAmount>{amounts}
#define MK_INPUTS(txs,...) std::vector<CTransactionRef>{txs}
#define MK_INPUT_IDX(idxes,...) std::vector<uint32_t>{idxes}
I don't know if that will break any other compilers.
If I had a spare 198 Swiss Francs I'd buy the C standard and check which is the correct approach, https://www.iso.org/standard/57853.html, but I don't.