Was ist der beste Weg, um einen gemeinsamen numerischen Typ in einem Template-Parameterpaket mit:
zu bestimmen? Die variadische Vorlage ( best_common_numeric_type
) könnte wie folgt verwendet werden:
Und haben Instanzen wie die folgenden:
%Vor% Im Fall [4] zum Beispiel müsste ::type
signed long
sein, da signed int
keine unsigned int
ohne Überlaufrisiko halten könnte, und umgekehrt unsigned int
keine signed int
ohne Unterlaufrisiko.
Dasselbe gilt auch in [5], nur dass jetzt ein signed long
nicht mehr ausreicht, da das unsigned long
nicht ohne Überlaufgefahr gehalten werden kann.
(Die Implementierung könnte Datenmodell spezifisch sein, aber Sie erhalten die Idee.)
Was könnte der beste Weg in C ++ 11 sein, um dies zu erreichen?
Ich bin ein bisschen spät auf die Party, Hier ist meine Lösung ohne Boost:
%Vor%Nach meinem Wissen gibt es dafür keinen Standard, aber es kann gemacht werden: Ссылка
Zuerst die "Denker" Strukturen.
%Vor%Dann die Basisfälle:
%Vor%Dann die Tischler:
%Vor%Und schließlich ein Test:
%Vor%Ergebnisse:
%Vor%Tags und Links c++ c++11 templates variadic-templates template-meta-programming