Если вы считаете, что ваша не шаблонная библиотека может быть только заголовочной, рассмотрите возможность деления ее на два файла в любом случае, а затем предоставьте третий файл, который включает в себя .h
и .cpp
(с защитой включения).
Тогда любой, кто использует вашу библиотеку во многих различных TU и подозревает, что это может потребовать много времени на компиляцию, может легко внести изменения, чтобы протестировать ее.
Как только вы узнаете пользователейЕсли у вас есть возможность использовать библиотеку, ответом, вероятно, станет «предложите эту опцию, когда сможете».Настолько, что включение его из нескольких TU не нарушало бы ODR.Например, если ваши не-static
свободные функции ссылаются на static
глобальные переменные, то вам не повезло, так как разные определения этой функции в разных TU будут ссылаться на разные объекты с одинаковым именем, которое являетсяУСО-нарушение.