static_assert는 컴파일 타임에서 지정한 조건을 만족하지 않을 경우 개발자에게 에러를 제공하는 기능입니다. 한가지 예로 static_assert의 기능을 정리합니다.
#include "stdafx.h" #includeusing namespace std; template int func() { static_assert(N <= 100, "Less than 100"); int sum = 0; for(int i=1; i<=N; i++) { sum += i; } return sum; } int _tmain(int argc, _TCHAR* argv[]) { cout << func<10>() << endl; cout << func<1000>() << endl; return 0; }
위의 코드에서 7번에 static_assert가 사용되었습니다. 이 static_assert의 첫번째 인자는 조건이고 두번째는 조건이 false일 경우 개발자에게 제공할 Error 메세지입니다. 실제로 18번 코드는 static_assert의 조건을 만족하므로 문제가 없으나 19번 코드는 static_assert의 조건을 만족하지 못하므로 Less than 100이라는 에러 메세지를 개발단계에서 개발자에게 경고를 해주게 됩니다.