>> 1. Header only: Wir schieben den gesamten Code in Header Dateien und
>> kompilieren REFLEX mit jeder Applikation. So machen es auch manch
>> andere C++ Bibliotheken. Da könnten manche Abhängigkeiten allerdings
>> erschweren.
>
> Da zweifel ich ad-hoc an der technischen Realisierbarkeit. Ohne alles als
> Templates umzuschreiben, wo der Linker die Arbeit ab nimmt und die
> doppelten Symbole wegkürzt, wie will man da alle Symbole, welche dann in
> jedem Artefakt (cpp-Datei) auftauchen werden, behandeln. Meiner Erfahrung
> nach sollte der Linker an dieser Stelle das binden verweigern. Oder
> übersehe ich da jetzt was?
Foo.h ----->
class Foo
{
void bar();
};
inline void Foo::bar()
{
//
}
<----- Foo.h
Wenn der Compiler sich entscheiden sollte, nicht zu inlinen, dann erzeugt er
ein Symbol mit "weak linkage" für Foo::bar in jeder Translation unit.
Mehrfache schwache Symbole werden dann beim Binden entfernt (). Ich gehe
davon aus, dass bei aktivierter LTO die Inline-Heuristik noch einmal
deutlich besser arbeitet.
Zikuläre Abhängigkeiten könnten das Vorhaben allerdings tatsächlich
unmöglich machen.