Nessuna virgola è consentita in un argomento macro poiché verrà trattata come più di un argomento e la preelaborazione sarà errata. Tuttavia, possiamo parentesi l'argomento per consentire al preprocessore di trattarlo come un argomento. C'è una macro o altre tecniche che possono rimuovere le parentesi che racchiudono?Come rimuovere le parentesi racchiudenti con macro?
Per esempio, se io definisco una macro come
#define MY_MACRO(a, b) ...
e utilizzarlo come
MY_MACRO(A<int, double>, text);
sarà sbagliato. usalo come
MY_MACRO((A<int, double>), text)
con una macro o tecnica per rimuovere le parentesi andrà bene. Boost offre BOOST_IDENTITY_TYPE
macro solo per i tipi, ma non casi generali
A work around - 'typedef A IA; MY_MACRO (IA, text); ' –
Il typedef è più elegante di tutti gli hack del preprocessore IMHO –