C++ 11 Standard haben std::conditional<>
Vorlage für die Typauswahl durch die einige boolesche Bedingung zum Zeitpunkt des Compilers. Wie wird die gleiche Operation ausgeführt, aber für den Initialisierungswert für die Initialisierung der Variablen? Ähnlich wie type a = (exp) ? first_value : second_value;
.Wie erfolgt die Initialisierung der bedingten Variablen zur Compilerzeit?
ich meine Vorlage:
template<bool B, typename T>
inline constexpr T&& conditional_initialize(T&& i1, T&& i2) {
return B ? std::move(i1) : std::move(i2);
}
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. Falsche Kompilierung Beispiel: int a[] = conditional_initialize<true>({1, 2}, {3,4,5});
Fehlermeldung: no matching function for call to 'conditional_initialize(<brace-enclosed initializer list>, <brace-enclosed initializer list>)';
Wer kann mir helfen mit Vorlage?
@AndyG, ist es 'std :: initializer_list' ' –
alexeykuzmin0
int a [] = conditional_initialize ({1, 2}, {3,4,5});' Das kann nicht funktionieren, können Sie nicht kopieren oder verschieben Konstruieren Sie eingebaute Arrays. –
@ alexeykuzmin0 wäre es in der Tat, aber leider [Vorlagen können nicht abgeleitet werden 'std :: initializer_list'] (http://stackoverflow.com/a/12431810/3233393). – Quentin