|
Dieses Pragma bewirkt, dass die durch den Namen bestimmte Instanz erzeugt wird. Als Parameter wird der externe Binde-Name verwendet. Dieser ist codiert und unterscheidet sich vom Source-Namen. Als Beispiel: die Template-Funktion template <class T> void foo(T t);
instanziiert mit int
wird mit #pragma instantiate_mangled_id __1foo__tm__2_i__FZ1Z_v&_
angesprochen.
Das Pragma ist nicht an eine Position gebunden und kann überall stehen. Es wird erst ausgewertet, wenn die Source vollständig gelesen wurde. Zu dem Zeitpunkt sind alle Templates der Source bekannt. In manchen Situationen hat das Pragma keinen Effekt. In diesem Fall wird eine Warnung ausgegeben. Mögliche Ursachen können sein:
- falsche Syntax, das Argument ist kein gültiger externer Name
- das Argument bezeichnet keine Template-Instanz (und keine extern inline Instanz)
- die Instanz wurde in der Source nicht benutzt
- die Instanz kann nicht generiert werden (fehlende Definition des Templates oder eines Arguments der Instanz)
Dieses Pragma ist in C/C++ ab Version 4.0B04 verfügbar.