본문 바로가기

진리는어디에

error: too few template-parameter-lists

" error: too few template-parameter-lists"는 신규 버젼 gnu cpp 컴파일러에서 발생하는 에러다.
이 문제는 템플릿 클래스의 static 멤버 변수를 초기화 할 때 발생하며, 해결을 template<>을 static 멤버 변수 초기화 코드 앞에 붙여 주어야 한다.

예를 들어 :


template <class T>

 class A
 {
    static int a;
    static const char * const name;
 };

와 같은 코드가 있다고 해보자. 예전에는 아래와 같이 써도 무방했다 :
 int A::a = 0;
const char * const A::name = NULL;
하지만 위와 같은 코드는 
CeePlusPlus 표준에 의해 이제는 더 이상 유효한 코드가 아니며 "" error: too few template-parameter-lists" 에러를 발생 한다.

아래와 같이 수정하도록 한다 :
 template<> int A<int>::a = 0;
 template<> const char * const  A<int>::name = "example";


Example code 2

 #include <iostream>
 template <int I>
 class B
 {
 public:
   static int b;
 };

template<> int B<1>::b = 1; template <int I> int B<I>::b = 0;

int main() { std::cout << B<1>::b << std::endl; // 1 std::cout << B<2>::b << std::endl; // 0 return 0;
} 
ref.
Too Few Template Parameter Lists : http://www.c2.com/cgi/wiki?TooFewTemplateParameterLists
유익한 글이었다면 공감(❤) 버튼 꾹!! 추가 문의 사항은 댓글로!!