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.



pool.addUnchecked(tx10.GetHash(), entry.FromTx(tx10), setAncestors);
    /**
     *  tx8 and tx9 should both now be sorted higher
     *  Final order after tx10 is added:
     *
     *  tx3 = 0 (1)
     *  tx5 = 10000 (1)
     *  tx1 = 10000 (1)
     *  tx4 = 15000 (1)
     *  tx2 = 20000 (1)
     *  tx9 = 200k (2 txs)
     *  tx8 = 200k (2 txs)
     *  tx10 = 200k (1 tx)
     *  tx6 = 2.2M (5 txs)
     *  tx7 = 2.2M (4 txs)
     */
    sortedOrder.erase(sortedOrder.begin(), sortedOrder.begin()+2); 
    sortedOrder.insert(sortedOrder.begin()+5, tx9.GetHash().ToString());
    sortedOrder.insert(sortedOrder.begin()+6, tx8.GetHash().ToString());
    sortedOrder.insert(sortedOrder.begin()+7, tx10.GetHash().ToString()); 
    CheckSort<descendant_score>(pool, sortedOrder);
    
    BOOST_CHECK_EQUAL(pool.size(), 10U);
    
    pool.removeRecursive(pool.mapTx.find(tx10.GetHash())->GetTx());
    CheckSort<descendant_score>(pool, snapshotOrder);
    pool.removeRecursive(pool.mapTx.find(tx9.GetHash())->GetTx());
    pool.removeRecursive(pool.mapTx.find(tx8.GetHash())->GetTx());
}
BOOST_AUTO_TEST_CASE(MempoolAncestorIndexingTest)