2012-06-16 3 views
5

"정적 const"데이터 멤버가있는 여러 클래스가 있습니다. static_assert를 사용하여 컴파일 타임에 값을 확인하는 방법을 알고 싶습니다. static_assert를 직접 클래스 본문에 넣을 수 있습니까? (모든 생성자에 내 static_assert를 두는 것은별로 실용적이지 않습니다.)정적 const 클래스 데이터 멤버를 확인하는 정적 어설 션?

답변

4

예, static_assert()은 선언이있는 모든 곳에 배치 할 수 있습니다. 여기에는 수업의 본문이 포함됩니다.

class C { 
public: 
    enum E { 
     A, B, C, 
     NumEes 
    }; 
    constexpr Foo foos[] = { {...}, {...}, {...} }; 
    static_assert(NumEes == sizeof foos/sizeof *foos, "size mismatch"); 

    // ... 
}; 
관련 문제