Gibt es keine integrierte Möglichkeit zur Berechnung der power bei der Kompilierung in C++?

Habe ich folgende sehr einfache Vorlage. Als ich erfuhr, dass ^ ist nicht die exponentielle operator. Jetzt bin ich auf der Suche nach einem Weg, um zu berechnen, diese macht. Es gibt viele Beispiele, die mit einem rekursiven template auf das internet. Dies ist nicht allzu schwierig.

Aber ich Frage mich: gibt es eigentlich keine "built-in" - Methode in C++ zu berechnen, diese auf die compile-Zeit?

template <int DIM>
class BinIdx : Idx
{
        static const int SIZE = 3 ^ DIM; //whoops, this is NOT an exponential operator!
}
  • Wenn es sich nur um eine Potenz von zwei sein, verwenden Sie 1 << DIM. Ansonsten, Nein.
  • für Zweierpotenzen... 1 << DIM :p
  • Es ist nicht notwendigerweise eine Potenz von 2 ist 😉
  • Nein. Es gibt auch keine eingebaute compile-time sqrt oder built-in-compile-time exp oder built-in-compile-time log ... glaubst du wirklich, es muss sein?
  • Sie könnten wahrscheinlich machen einige mit constexpr Funktionen...
  • Sie können immer darauf zurückgreifen, Vorverarbeitung und source-code-Generierung mit einigen script-Sprache. Es ist manchmal zwar für die Optionen Klassen und dergleichen. Ansonsten, die Antwort ist so kurz wie <<, die für die C++ - Programmierung, die Sie besser in der Lage sein, zu schauen dich.

InformationsquelleAutor Michael | 2014-12-03
Schreibe einen Kommentar