2014-11-26 2 views
1

나는 cpp에서 많은 경험을 갖고 있지 않다.잘못된 템플릿 인수 번호

왜이 작업을 수행합니까?

sc_in<sc_uint<8>> a,b; 

adder.cpp:5: error: ‘a’ was not declared in this scope
adder.cpp:5: error: ‘b’ was not declared in this scope
adder.cpp:5: error: wrong number of template arguments (2, should be 1)

이 작업을 수행합니다 컴파일러가 수행하려는 생각하기 때문에

sc_in<int> a,b; 
+3

공간이 부족합니다. 그건 그렇고'''''''' – MrEricSir

+0

그건 그렇고, 컴파일러는 [훨씬 더 좋은 오류를 줄 수 있습니다] (http://coliru.stacked-crooked.com/a/2dc1a2495f53c15a). – chris

+0

실제로'>> '는 C++ 11 호환 컴파일러에서는 괜찮습니다. – drescherjm

답변

7

C++ 03에서, 당신은 서로 옆에 두 개의 > 문자를 가질 수 없습니다 오른쪽 교대.

그런 다음 정말 당신이 의미하는 생각 혼동됩니다 : 경우 해당까지 얻는 것을 처리했다

sc_in<sc_uint<(8 >> a), b; 
//    ^^^
//     ? | ? Compiler: "what are `a` and `b`?!" 
//     !  Compiler: "why two arguments?!" 

, 나중에, ; 전에이 개없는 > 문자에 대해 불평 아이러니하게도 당신을 복용 것 당신이 시작한 곳으로.

대신 sc_in<sc_uint<8> >을 작성해야합니다.

C++ 11부터 수정되었습니다.