Хочу написать header only library. Но есть сомнения что что-нибудь сделаю не так.
Возможно, есть какие-нибудь подводные камни. Например, как я понимаю, там может быть нарушение ODR.
Существует ли такой набор правил, по которым пишут header only библиотеки?
Чтоб не было нарушения ODR используйте "header guards", впрочем это касается всех файлов заголовков.
Ну может еще использовать namespace для всех сущностей в библиотеке.
res2001, скажите пожалуйста, а я не ошибаюсь в том что разница с dll, static / HOL в том что в случае первых скрыта реализация а интерфейс торчит наружу. А во втором случае мы выставляем и интерфейс и реализацию одновременно?
Joe Doe, С точки зрения разработчика библиотеки - да.
С точки зрения пользователя библиотеки разница в том, что dll/static вы подключаете к проекту уже собранные бинарные модули (и исходники могут быть не доступны, кроме заголовков разумеется), а в HOL - исходники.