Stiamo creando un set di librerie con un'API pubblica che deve essere utilizzata da terze parti diverse. Alcune librerie sono pure C, quindi ovviamente hanno un'intestazione in stile C con funzioni e definizioni struct e la libreria corrispondente. Loro sono ok.Come pubblicare i file di intestazione con le implementazioni dei modelli?
Alcune librerie sono scritte con l'uso di un C++ moderatamente complesso (rivolto ai compilatori più vecchi), quindi abbiamo implementato alcune forme del famoso idioma di Pimpl. Va bene anche questo.
Dall'altra parte una parte significativa dei file di intestazione è C++ utilizzando codice fortemente basato su modelli. Conoscendo il Why can templates only be implemented in the header file? ma anche non volendo rivelare troppi dettagli di implementazione agli occhi che non dovrebbero vederli, li abbiamo fortemente refactored per escludere quanti più dettagli interni possibili e avere solo i bit veramente necessari ... e c'è ancora un significativo quantità di codice rimanente.
Quindi mi imbarazza: c'è un modo preferito di distribuire i file di intestazione che in gran parte contengono modelli? Quali buone pratiche, migliori approcci e trucchi e suggerimenti ci sono?
Non penso che ci sia un trattamento robusto su questo problema. – 101010