Ich versuche, eine Klasse zu schreiben, die eine Variable enthält, deren Typ so klein wie möglich gewählt würde, um einen Wert zu enthalten.Wählen Sie den kleinsten Integer-Typ basierend auf einem Gleitkomma
Was ich meine ist:
class foo {
"int type here" a;
}
ich über Automatically pick a variable type big enough to hold a specified number kam. Aufgrund von Schwierigkeiten mit der Boost-Bibliothek ging ich weiter und nutzte die Vorlagenvorschläge.
, dass der Code in die Kurven:
template<unsigned long long T>
class foo {
SelectInteger<T>::type a;
}
Allerdings stellt sich mein Problem aus der Tatsache, dass die Größe der Variable ein Ergebnis ist eine Gleitkomma-Variable und der ganzen Zahl multipliziert wird. Deshalb, was ich möchte in der Lage sein zu tun ist:
template<unsigned long long T, double E>
class foo {
SelectInteger<T*E>::type a;
}
Aber da Vorlagen arbeiten nicht mit Punktvariablen Floating (siehe here), kann ich nicht E
in einer Vorlage übergeben. Gibt es eine andere Möglichkeit, eine Variable (die während der Kompilierung verfügbar sein sollte) an die Klasse zu übergeben?
nie über constexpr kannte. Danke vielmals. –