Ok, das ist kompliziert.Code einmal für jede C++ Klassenschabloneninstanz ausführen
Ich habe eine C++ - Klassenvorlage, die viele Male instanziiert wird. Für jede dieser Instanzen muss ich eine Funktion ausführen, die einige Operatoren registriert. Dies muss nur einmal pro Vorlageninstanz geschehen, bevor das erste Objekt dieser Vorlageninstanz verwendet wird (was nicht bedeutet, dass es unter Instanziierung ausgeführt werden muss, was während der Kompilierzeit geschieht).
Bis heute habe ich das manuell gemacht. Aber es ist ein Schmerz. Also möchte ich die Registrierungsfunktion automatisch ausführen.
Meine aktuelle Idee ist es, eine geschützte Registrierungsmethode im Konstruktor aufzurufen. Dies erfordert jedoch einen (geringen) Overhead, wenn eine Instanz der Klasse aufgebaut wird. Da dies sehr oft gemacht wird, möchte ich diesen Overhead vermeiden.
Ich habe auch versucht, ein statisches RAII-Helferelement zu verwenden, aber statische Vorlagenklassenelemente werden nicht erstellt, wenn sie nicht aktiv zugegriffen werden, so dass dieser Versuch fehlgeschlagen ist.
Gibt es eine Möglichkeit, Code auf Klassenschabloneninstanz (von einer Funktion oder vielleicht von einer RAII-Helferklasse) ohne Laufzeitaufwand auszuführen?
Normalerweise Vorlagen bei der Kompilierung zur Laufzeit nicht instanziiert werden. Sind Sie sicher, Ihr Problem ist real? – BitTickler
Ja ist es. Ich muss den Code * bei * Instanziierung nicht ausführen. Ich muss es vor der ersten Verwendung eines Objekts ausführen. – Silicomancer