Почему Boost.ProgramOptions не только для заголовков?
Некоторые дополнительные библиотеки предназначены только для заголовков, некоторые - нет, и по разным причинам и т.д.
Существует ли конкретное решение причины/дизайна, почему Boost.ProgramOptions
не только для заголовка?
Мне интересно, потому что он утверждает, что является "маленькой" библиотекой в своей документации, и я не вижу причин, связанных с системой (например, нити или asio).
Ответы
Ответ 1
Не все С++-коды могут быть написаны только в заголовках из-за нарушений правил с одним определением.
Например, резервирование хранилища для члена static
класса должно быть ровно одной единицей перевода (хотя будущие стандарты на C++ могут устранить это).
Первоначальное намерение состояло в том, чтобы Boost был только заголовком, но им пришлось быстро отказаться от этой устремленности.
Ответ 2
Параметры программы утверждают, что они небольшие, но, оказывается, это вторая по величине библиотека, которую мы создавали, после Regex. (Это больше, чем поддержка файловой системы и библиотек потоков.) Я считаю, что вы должны быть рады, что они создают для нее библиотеку, а не задыхаются от вашего проекта с тонны включенных заголовков. Возможно, автор думал, что он будет небольшим, когда он начнет и забыл изменить комментарий, когда он продолжит расти и добавить функции.