Code: Select all
extern template
Ich suche nach dem Äquivalent für Variablenvorlagen: eine Familie deklarieren von Variablen mithilfe einer Vorlage, deklarieren Sie, dass einige von ihnen instanziiert sind, und instanziieren Sie sie dann in einer Übersetzungseinheit. Allerdings kann ich die Variablenvorlage nicht deklarieren, ohne sie gleichzeitig zu definieren.
Das Folgende sieht so aus, als ob es funktionieren sollte, funktioniert aber nicht (clang 19):
Code: Select all
class A { public: A(int) {} };
extern template const A var;
extern template const A var;
template const A var = A(4);
Fehlermeldungen:
Code: Select all
:5:17: error: expected unqualified-id
5 | extern template const A var;
| ^
:7:25: error: explicit instantiation of 'var' does not refer to a function template, variable template, member function, member class, or static data member
7 | extern template const A var;
| ^
:9:21: error: no variable template matches specialization
9 | template const A var = A(4);
| ^
3 errors generated.
Compiler returned: 1