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.



CheckSort<ancestor_score>(pool, sortedOrder);
    
    std::vector<CTransactionRef> vtx;
    vtx.push_back(MakeTransactionRef(tx6));
    pool.removeForBlock(vtx, 1);
    sortedOrder.erase(sortedOrder.begin()+1);
    
    if (tx3.GetHash() < tx6.GetHash())
        sortedOrder.pop_back();
    else
        sortedOrder.erase(sortedOrder.end()-2);
    sortedOrder.insert(sortedOrder.begin(), tx7.GetHash().ToString());
    CheckSort<ancestor_score>(pool, sortedOrder);
    
    
    CMutableTransaction tx8 = CMutableTransaction();
    tx8.vin.resize(1);
    tx8.vin[0].prevout  = COutPoint(tx7.GetHash(), 0);
    tx8.vin[0].scriptSig = CScript() << OP_11;
    tx8.vout.resize(1);
    tx8.vout[0].scriptPubKey = CScript() << OP_11 << OP_EQUAL;
    tx8.vout[0].nValue = 10*COIN;
    
    
    
    pool.addUnchecked(tx8.GetHash(), entry.Fee(5000LL).FromTx(tx8));
    sortedOrder.insert(sortedOrder.end()-1, tx8.GetHash().ToString());
    CheckSort<ancestor_score>(pool, sortedOrder);
}
BOOST_AUTO_TEST_CASE(MempoolSizeLimitTest)