Вариадные макросы, как указано в C++11, являются особенностью, взятой из спецификации C99. Это макросы, которые принимают окончательный параметр, обозначаемый как «...», который представляет один или несколько окончательных аргументов для макроса в виде серии токенов, разделенных запятыми. В макрорасширении специальное ключевое слово «__VA_ARGS__» представляет токены, разделенные запятой. Эту информацию при передаче вариадному макросу я называю «вариадическими макроданными», что дает название этой библиотеке. Более общий термин «вариадные данные» используется в этой документации для указания данных, передаваемых макросу, который может содержать любое количество макрокенов в качестве одного макропараметра, например, в типах данных Boost PP.
Библиотека Boost PP имеет поддержку вариадных макросов и использует свои собственные критерии, чтобы определить, имеет ли конкретный компилятор эту поддержку. Boost PP определяет или использует макрос BOOST_PP_VARIADICS для обозначения того, поддерживает ли используемый компилятор вариадные макросы. Когда BOOST_PP_VARIADICS Настроенный на 1 компилятор поддерживает вариадные макросы, в противном случае, когда BOOST_PP_VARIADICS установлен на 0, компилятор не поддерживает вариадные макросы. Если пользователь Boost PP устанавливает это значение, Boost PP использует значение, установленное конечным пользователем, в противном случае Boost PP определяет значение BOOST_PP_VARIADICS на основе собственного анализа используемого компилятора. Этот макрос также может быть проверен, чтобы определить, имеет ли компилятор поддержку вариадных макросов.
Библиотека VMD автоматически определяет, включена ли вариадная макроподдержка для конкретного компилятора, также используя тот же макрос BOOST_PP_VARIADICS от Boost PP. Конечный пользователь VMD также может вручную установить макрос BOOST_PP_VARIADICS для включения или выключения поддержки компилятора для вариадных макросов в библиотеке VMD. Когда BOOST_PP_VARIADICS Настроен на 0 вариадных макросов, не поддерживаемых в библиотеке VMD, в противном случае, когда BOOST_PP_VARIADICS установлен на ненулевой уровень, они поддерживаются в библиотеке VMD. Этот же макрос может быть использован для определения того, поддерживает ли VMD вариадные макросы для конкретного компилятора.
Поскольку эта библиотека зависит от вариадной макроподдержки, если BOOST_PP_VARIADICS установлен на 0, использование любого из макросов в VMD приведет к ошибке компилятора, поскольку макрос не будет определен. Однако простое включение любого из файлов заголовка в VMD, даже без вариадной макроподдержки компилятора, не приведет к ошибкам компилятора.