Está en la página 1de 7

ASERCIONES

ESTATICAS
PRESENTADO POR:
GUSTAVO SALAZAR
ESCOBAR

Aserciones estticas
Las aserciones que son
comprobadas en tiempo de
compilacin reciben el nombre
de aserciones estticas. Este
tipo de aserciones resultan
particularmente tiles en la
meta programacin de
plantillas.

Aserciones estticas (static_assert)

C ha tenido la directiva de
reprocesamiento #error desde C89 que
puede utilizarse para proporcionar
mensajes de error basados en pruebas
realizadas por el preprocesador :
#if __STDC__ != 1
# error "Not a standard compliant
compiler"
#endif

Aserciones estticas (static_assert)

Al igual que C++11, esta nueva


versin de C aade una nueva
palabra clave,
static_assert, que permite aadir
aserciones en el cdigo que se
ejecutan a nivel de compilador.

SINTAXIS DE DECLARACION
static_assert(constant-expression,
string-literal);
Unastatic_assert erronea con una
expresion constante invalida:
static_assert(1 / 0, "never shows
up!");

Ejemplo 1
in block scope, with templates

template < class T, size_t length >


class String{
static_assert(length < 100,
"length is toobig");
T str_data[length];
};
int main(){
String<int, 101 > a1;
String<int, 90 > a2;
return 0;

EJEMPLO 2
in class scope, with templates

#include <type_traits>
#include <string>
template <typename T, int N>void f() {
static_assert (N >=0, "length of array a
is negative.");
T a[N];
// ...}
int main() { f<int, -5>();}

También podría gustarte