헤더파일

C++ static_assert 본문

C++

C++ static_assert

헤더파일 2020. 3. 26. 23:17

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
Comments