Почему Boost.ProgramOptions не только для заголовков?

Некоторые дополнительные библиотеки предназначены только для заголовков, некоторые - нет, и по разным причинам и т.д.

Существует ли конкретное решение причины/дизайна, почему Boost.ProgramOptions не только для заголовка?

Мне интересно, потому что он утверждает, что является "маленькой" библиотекой в ​​своей документации, и я не вижу причин, связанных с системой (например, нити или asio).

Ответ 1

Не все С++-коды могут быть написаны только в заголовках из-за нарушений правил с одним определением.

Например, резервирование хранилища для члена static класса должно быть ровно одной единицей перевода (хотя будущие стандарты на C++ могут устранить это).

Первоначальное намерение состояло в том, чтобы Boost был только заголовком, но им пришлось быстро отказаться от этой устремленности.

Ответ 2

Параметры программы утверждают, что они небольшие, но, оказывается, это вторая по величине библиотека, которую мы создавали, после Regex. (Это больше, чем поддержка файловой системы и библиотек потоков.) Я считаю, что вы должны быть рады, что они создают для нее библиотеку, а не задыхаются от вашего проекта с тонны включенных заголовков. Возможно, автор думал, что он будет небольшим, когда он начнет и забыл изменить комментарий, когда он продолжит расти и добавить функции.