Statische Assertions (C++0x)

Aus Appmethod Topics
Wechseln zu: Navigation, Suche

Nach oben zu C++0x-Features - Index

Mit dem Schlüsselwort static_assert werden beim Compilieren Assertions getestet. Dieses C++0x-Feature wurde zu Appmethod C++ 2009 hinzugefügt.

Dieses Schlüsselwort arbeitet anders als das Makro assert, das zur Laufzeit Assertions auslöst. Das Schlüsselwort static_assert unterscheidet sich auch von der Präprozessordirektive #error, die während der Vorverarbeitung wirksam ist und einfach eine Meldung ausgibt.

Syntax

Die Deklaration einer statischen Assertion lautet:

static_assert (Konstantenausdruck, Fehlermeldung);

Der Konstantenausdruck muss statisch zu boolean ausgewertet werden können. Wenn Konstantenausdruck true ist, führt die Anweisung nichts aus. Bei false erzeugt der Compiler einen Fehler mit dem Text Fehlermeldung.

Weil die Assertion beim Compilieren getestet wird, kann static_assert eine Fehlerprüfung in Templates vornehmen. Zum Beispiel:

template <class T>
   T Test(T x, T y) {
   static_assert(sizeof T <= sizeof long, "Typ ist zu groß");
   ...
   };

static_assert ist für die statische Typprüfung hilfreich. Eine Funktion kann fehlschlagen, wenn die Implementierung eines int zu klein ist, deshalb ist static_assert auch außerhalb von Templates von Nutzen.

Siehe auch