„externe Vorlage“ für variable VorlagenC++

Programme in C++. Entwicklerforum
Guest
 „externe Vorlage“ für variable Vorlagen

Post by Guest »

Code: Select all

extern template
ermöglicht es einem, eine Funktionsvorlage zu deklarieren, explizite Instanziierungen zu deklarieren und sie dann in einer Übersetzungseinheit zu instanziieren.
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);
Clang lehnt die zweite Zeile ab. Ohne extern wird es akzeptiert, aber es deklariert und definiert die Variable.
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
Der Compiler erlaubt mir nicht, eine Variablenvorlage zu deklarieren, aber nicht zu definieren, während er es erlaubt, eine Funktionsvorlage oder eine Klassenvorlage zu deklarieren, aber nicht zu definieren.< /P>

Quick Reply

Change Text Case: 
   
  • Similar Topics
    Replies
    Views
    Last post