Tworzymy zestaw bibliotek z publicznym interfejsem API, który ma być używany przez różne strony trzecie. Niektóre biblioteki są czyste C, więc oczywiście mają nagłówek w stylu C z funkcjami i definicjami struct i odpowiednią biblioteką. Oni są w porządku.Jak publikować pliki nagłówkowe z implementacjami szablonów?
Niektóre z bibliotek są napisane przy użyciu umiarkowanie złożonego C++ (kierującego na starsze kompilatory), więc wprowadziliśmy pewną formę słynnego idiomu pimpl. To też jest w porządku.
Z drugiej strony znaczna część plików nagłówkowych to C++ z użyciem silnie szablonowego kodu. Znając Why can templates only be implemented in the header file?, ale także nie chcąc ujawniać zbyt wielu szczegółów dotyczących implementacji oczom, które nie powinny ich widzieć, intensywnie je refaktoryzowaliśmy, aby wykluczyć jak najwięcej szczegółów wewnętrznych i mieć tylko naprawdę potrzebne fragmenty ... i nadal jest znaczący ilość kodu pozostała.
To mnie zastanawia: czy istnieje preferowany sposób dystrybucji plików nagłówkowych, które w dużej mierze zawierają szablony? Jakie są dobre praktyki, najlepsze podejścia i wskazówki i porady?
Nie sądzę, że istnieje solidne leczenie w tej kwestii. – 101010