Notice
Recent Posts
Recent Comments
Link
헤더파일
C++ static_assert 본문
assert는 실행시간에 표현식이 거짓이면 프로그램을 종료합니다.
c++11에서 추가된 static_assert는 컴파일 타임에 판단하여 거짓이면 컴파일이 실패합니다.
void foo(int age)
{
assert(age>0);
static_assert(age >0, "error");//변수는 컴파일 타임에 판단 불가능, 사용 X
static_assert(1<0,"error");//OK
}
대신 static_assert 에서는 컴파일 타임에 판단할 수 있는 조건이여야 하므로 변수는 사용할 수 없습니다.
static_assert(is_copy_construction<T>::value, "Error T is not copyable")
이런 식으로 템플릿을 만들 때 type_traits를 사용해서 T가 가져야 하는 조건을 static_assert 로 조사하는 고드가 널리 사용됩니다. 특히 템플릿에서는 실패할 경우 에러메시지가 상당히 복잡하므로 유용합니다.
'C++' 카테고리의 다른 글
C++ begin/end (1) | 2020.03.26 |
---|---|
c++ Brace Init (0) | 2020.03.25 |
C++ Explicit Conversion Operator (0) | 2020.03.25 |
c++ 변환 연산자, 변환 생성자 (0) | 2020.03.23 |
C++17 if 초기화, if constexpr, 구조체 바인딩 (1) | 2020.03.23 |