2014-07-10 2 views
0

수 i를 그 클래스 템플릿 정수 매개 변수를 확인하기 위해 다음을 짝수 수행static_assert

template<int N> 
struct S 
{ 
    static_assert(N % 2 == 0, "fail"); 
}; 

이 GCC 4.8.3로 컴파일하지만이 코드는 C를 위반하지 않는 경우에 확실하지 않다 ++ 11 표준 및 다른 표준 호환 컴파일러와 함께 사용할 것인지 여부를 결정합니다.

+4

아무 문제가 없습니다. – chris

+0

@chris 네, 맞습니다 : "fail" – jrok

+0

@jrok, 당신이 말하는 것이 Ok입니까,하지 않습니까? – user2052436

답변

2

static_assert을 사용하는 유일한 실제 요구 사항은 사용되는 표현식이 상수 표현식이어야한다는 것입니다 (즉, 컴파일 타임에 값을 결정할 수 있어야합니다). 따라서 값을 사용하려고하면 문제가 발생합니다. 런타임까지 알 수 없습니다.

여러분이 사용하는 값이 컴파일 타임 상수라면 괜찮을 것입니다.

관련 문제