pre-C++ 11 정적 어설 션을 사용하려고합니다. 나는 this 및 this 질문을 찾았지만, 어떻게 든 그것을 실행 얻을 캔트 :이 정적 어설 션이 작동하지 않는 이유는 무엇입니까?
#define STATIC_ASSERT(x) \
do { \
const static char dummy[(x)?1:-1] = {0};\
} while(0)
struct bar {
int value;
template<typename T> void setValue(T x);
};
template<typename T> void bar::setValue(T x) { STATIC_ASSERT(1==0); }
template<> void bar::setValue(int x) { value = x;}
int main(){
bar b;
int c = 1;
b.setValue(c);
}
나는 아무것도 setValue
를 호출하면 나는이 오류는 apprear 기대
error: size of array 'dummy' is negative
이 (GCC)를 컴파일 결과 int
이외. 나 또한 다른 제안 된 솔루션을 시도했지만 더 많거나 적은 같은 결과 : int
이외의 다른 템플릿으로 인스턴스화하지 않더라도 오류가 있습니다. 내가 도대체 뭘 잘못하고있는 겁니까?
, 당신이이 경우에 모든 템플릿을 사용하지 않아도 알고, 단순히'int' 유형으로 쓰기 그냥 궁금해서? (교육적인 이유로 여전히 흥미로운 질문과 답변이지만, 실제 사용법은 사소한 것이 아니기를 바랍니다 :)). – Ped7g
@ Ped7g 글쎄, 사실 내 실제 사용 예제로 사소한 것입니다. 필자는 함수가 올바른 유형의 매개 변수로 호출되고 변환이 수행되지 않는다는 것을 절대적으로 확신하고자합니다. 이것이 좋은 접근인지 아닌지는 아직 확실하지 않지만 여기에 대한 토론이 아닙니다. 내가 codereview에 넣을 것이다 ... – user463035818
explict 키워드를 찾는다. – UKMonkey