variable-templates

___ qstnhdr ___ Kann ich eine variable Vorlage verwenden, um eine andere Variablenvorlage zu deklarieren? ___ tag123c14 ___ C ++ 14 ist der Name des C ++ - Standards, der 2014 genehmigt wurde. Er baut auf dem vorherigen C ++ 11-Standard auf und verbessert die Kernsprache und die Standardbibliothek sowie einige Funktionen. ___ tag123variablentemplates ___ Verwenden Sie dieses Tag für alles, was mit C ++ 14-Variablenschablonen zu tun hat. ___ answer21587799 ___

Ihr Code ist gültig und wird von SVN akzeptiert. Der Link-Fehler wurde verursacht durch Clang Bug 17846 , was ich fixed vor ein paar Tagen .

    
___ qstntxt ___

Mit variablen Templates, die in C ++ 14 kommen (und Clang unterstützt sie bereits) und einem Vorschlag für Standard %code% und ebenfalls Typeigenschaften, dachte ich, dass ich in der Lage wäre, neue Typmerkmale wie folgt zu erstellen:

%Vor%

Leider führt dies zu Fehlern, die der folgenden SSCCE entsprechen ( diese enthält alles, was unten erwähnt wird):

%Vor%

Wenn die Zeile in %code% kommentiert wird, spuckt Clang Folgendes aus:

  

Warnung: Variable %code% hat interne Verknüpfung, ist aber nicht definiert

Es sieht für mich so aus (beachten Sie, dass das Ändern von %code% in %code% in %code% einwandfrei funktioniert). Wenn Sie die Zeile in %code% auflösen, um %code% zu instanziieren, erhalten Sie (auch hier: %code% bis %code% funktioniert):

  

Fehler: constexpr Variable %code% muss durch einen konstanten Ausdruck initialisiert werden

Wenn jedoch %code% durch die folgende alte Syntax ersetzt wird, funktionieren beide Instanzen einwandfrei:

%Vor%

Gibt es etwas, das mir an variablen Vorlagen fehlt? Gibt es eine Möglichkeit, neue variable Vorlagen mit ihnen zu erstellen, oder bin ich gezwungen, die ältere Syntax zu verwenden, um neue zu erstellen und genieße nur den syntaktischen Zucker, wenn ich sie für anderen Code verwende?

    
___ answer21359808 ___

Folgendes scheint zu funktionieren:

%Vor%

Live-Beispiel

Obwohl es die gleiche Warnung gibt, wenn es in einem %code% Kontext verwendet wird, nehme ich an, dass es nicht wirklich funktioniert.

%Vor%

Es hört auf sich zu beschweren, wenn Sie %code% einen expliziten Typ geben:

%Vor%

Oder benutzen Sie einfach %code% direkt:

%Vor%     
___ tag123c ___ C ++ ist eine universelle Programmiersprache. Es wurde ursprünglich als Erweiterung von C entworfen und behält eine ähnliche Syntax, ist aber jetzt eine komplett andere Sprache. Verwenden Sie dieses Tag für Fragen zu Code, der mit einem C ++ - Compiler kompiliert werden soll. ___
2
Antworten

Variable Vorlagenvorlage?

Angenommen, Sie haben einen Tupel-Typ und möchten das Template-Parameterpaket extrahieren, um eine andere Vorlage zu instanziieren. Wenn das eine Typvorlage ist, kann ich ein Dienstprogramm wie folgt haben: %Vor% Aber was ist, wenn die gewün...
23.10.2016, 08:29
2
Antworten

Kann ich eine variable Vorlage verwenden, um eine andere Variablenvorlage zu deklarieren?

Mit variablen Templates, die in C ++ 14 kommen (und Clang unterstützt sie bereits) und einem Vorschlag für Standard is_same_v und ebenfalls Typeigenschaften, dachte ich, dass ich in der Lage wäre, neue Typmerkmale wie folgt zu erstellen: %V...
26.01.2014, 02:12