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.



{
    CTxMemPool pool;
    TestMemPoolEntryHelper entry;
    
    CMutableTransaction tx1 = CMutableTransaction();
    tx1.vout.resize(1);
    tx1.vout[0].scriptPubKey = CScript() << OP_11 << OP_EQUAL;
    tx1.vout[0].nValue = 10 * COIN;
    pool.addUnchecked(tx1.GetHash(), entry.Fee(10000LL).FromTx(tx1));
    
    CMutableTransaction tx2 = CMutableTransaction();
    tx2.vout.resize(1);
    tx2.vout[0].scriptPubKey = CScript() << OP_11 << OP_EQUAL;
    tx2.vout[0].nValue = 2 * COIN;
    pool.addUnchecked(tx2.GetHash(), entry.Fee(20000LL).FromTx(tx2));
    
    CMutableTransaction tx3 = CMutableTransaction();
    tx3.vout.resize(1);
    tx3.vout[0].scriptPubKey = CScript() << OP_11 << OP_EQUAL;
    tx3.vout[0].nValue = 5 * COIN;
    pool.addUnchecked(tx3.GetHash(), entry.Fee(0LL).FromTx(tx3));
    
    CMutableTransaction tx4 = CMutableTransaction();
    tx4.vout.resize(1);
    tx4.vout[0].scriptPubKey = CScript() << OP_11 << OP_EQUAL;
    tx4.vout[0].nValue = 6 * COIN;
    pool.addUnchecked(tx4.GetHash(), entry.Fee(15000LL).FromTx(tx4));
    
    CMutableTransaction tx5 = CMutableTransaction();