Первоначальный толчок к созданию этой библиотеки был вполне практичным. Я работал над другой библиотекой макрофункций, которая использовала функцию Boost PP, и я понял, что если бы я мог использовать вариадные макросы с другой библиотекой, удобство использования конечного пользователя для этой библиотеки было бы проще. Поэтому первоначальной главной целью этой библиотеки было взаимодействие вариадных макроданных с Boost PP самым простым и понятным способом.
Это привело к тому, что оригинальные версии библиотеки стали толчком для добавления поддержки макроданных в Boost PP. Пока это было сделано, но поддержка вариадных макроданных еще не была завершена в Boost PP, я все еще поддерживал библиотеку в двух режимах, либо в ее собственной функции вариадных данных, либо откладывая реализацию вариадных макросов в библиотеке Boost PP.
После того, как в Boost PP была добавлена поддержка вариадных данных, я убрал функциональность этой библиотеки, чтобы включить только вариадную макроподдержку для функциональности, которая была дополнением к поддержке в Boost PP. Эта функциональность может рассматриваться как экспериментальная, поскольку она в значительной степени опиралась на макрос, который тестировался на пустой вход, который Пол Менсонидес, автор Boost PP, опубликовал в Интернете, и который по самой природе препроцессора C++ немного ошибочен, но который был самым близким приближением такой функциональности, которая, как я полагал, могла быть сделана. Мне пришлось несколько настроить этот макрос для препроцессора Visual C++, соответствие которого стандарту C++ для макрообработки в ряде областей заметно некорректно. Но я все еще чувствовал, что эта функциональность может быть использована в определенных ситуациях и может быть полезна для других. Используя эту функциональность, я смог создать несколько других макросов, которые тестировались для различных типов данных Boost PP. Я также смог добавить функциональность, основанную на отличной работе Пола Мендсонида, для обработки данных при предварительной обработке.
Вся эта конкретная функциональность невозможна без использования вариадных макросов. Но я сохранил эти функции как минимум из-за сложности использования вариадных макросов с компиляторами, в первую очередь Visual C++, реализация вариадных макросов которого является нестандартной и поэтому очень трудно работать правильно, когда вариадные макросы должны использоваться.
Затем я понял, что если у меня будет библиотека, которая использует вариадные макросы, я должен увидеть, что я могу сделать в области анализа данных препроцессора. Это привело к реорганизации библиотеки как набора макросов в основном для анализа данных препроцессора. Все это теперь построено на моем использовании почти идеальной проверки на пустоту, которую изначально создал Пол Менсонид.