Wie erfolgt die Initialisierung der bedingten Variablen zum Zeitpunkt des Compilers?

8

C ++ 11 Standard haben std::conditional<> Vorlage für die Typauswahl durch die boolesche Bedingung zum Zeitpunkt des Compilers. Wie man dieselbe Operation durchführt, aber den Initialisierungswert für die Variableninitialisierung auswählen? Ähnlich wie type a = (exp) ? first_value : second_value; .

Ich benutze meine Vorlage:

%Vor%

Aber es kann nur für POD-Typen verwendet werden: int a = conditional_initialize<true>(1, 2); . Bei der Array-Initialisierung wird diese Vorlage mit Fehler kompiliert. Falsches Kompilierungsbeispiel: int a[] = conditional_initialize<true>({1, 2}, {3,4,5});

  

Fehlermeldung: keine übereinstimmende Funktion für den Aufruf von 'conditional_initialize (& lt; Klammer-Initialisierer-Liste & gt ;, & lt; Klammer- eingeschlossene Initialisierungsliste & gt;);

Wer kann mir mit Vorlage helfen?

    
23W 08.08.2016, 14:44
quelle

1 Antwort

8
%Vor%

das gibt Ihnen:

%Vor%

Das ist in der Nähe.

Im Allgemeinen sind {} -Konstrukte keine Ausdrücke, sie können nicht durch irgendeinen Mechanismus durch eine andere Variable perfekt weitergeleitet werden.

Wir können auch bekommen:

%Vor%

mit ein bisschen mehr Arbeit.

%Vor%

Ich habe diese constexpr nicht gemacht, weil faul.

    
Yakk 08.08.2016, 15:01
quelle

Tags und Links