C
++
컴파일러의 모든 에러와 경고의 리스트(2100 ~ 2199)
                                                                                                                                                                                                  
E2100 템플릿의 선언 리스트가 잘못되어 있습니다

템플릿 클래스 선언의 뒤에 선언 리스트를 계속하는 것은 부정합니다. 예를 나타냅니다. 

template <class T>
class foo {

} object_name;    //이것은 에러가 됩니다

E2102 특화 파라미터를 지정하지 않으면 템플릿'template'를 사용할 수 없다.
범용 형식의 템플릿은, 특화 파라미터를 사용해 참조할 필요가 있습니다. 예를 들어, 2개의 템플릿 파라미터를 취하는 foo라고 하는 템플릿 클래스가 있는 경우, 올바른 참조는 다음의 형식이 됩니다.
foo< int , char >

템플릿을 foo로서 올바르게 참조할 수 있는 것은, 다음의 2개의 경우 뿐입니다.
·  템플릿명을 템플릿 템플릿 인수로서 건네주는 경우
·  클래스 템플릿의 멤버를 선언할 경우에, 그것을 포함 하는 템플릿의 형태를 참조하는 경우예를 나타냅니다. 

template <class T>
class foo
{
public :
    foo();         //
템플릿 명만의 올바른 사용입니다
    foo& operator =(const foo&);
};

foo<foo> x;     //에러:  템플릿 인수가 아닙니다
foo y;      //에러:  특화 파라미터가 필요합니다
 
E2105 'template'한정자는 멤버 템플릿 명을 지정해야 한다

템플릿 파라미터에 의존하는 코드를 해석하는 경우, 멤버명을 템플릿 함수명 또는 통상의 파라미터의 어느 쪽으로 해결할까를 판단할 수 없는 경우가 있습니다. 다음의 코드에서는, '<'(소든지) 연산자를 템플릿 인수 리스트의 개시 문자로서 해석하는지, 통상의'<'연산자로서 해석할까를 판단하기 위해서, 'template'한정자가 필요합니다. 

template <class T>
void foo(T a)
{
    a.member<10>();
}

'<'의 의미는 독자에게는 분명합니다만, 컴파일러는,"member"가 멤버 템플릿 함수를 나타내는 것을 인식하지 못하고, 코드행을 다음과 같이 해석합니다. 

a.member < (10>());

'<'가 템플릿 인수 리스트의 개시 문자인 것을 컴파일러에 통지하려면, 'template'한정자가 필요합니다. 

a.  template member<10>();     // "member"는 멤버 템플릿이 아니면 안됩니다"member"가 멤버 템플릿에 해결되지 않는 상황으로 'template' 한정자를 사용하면, 이 에러가 발생합니다.
 

E2107 템플릿 'template'의 사용이 무효

이 에러는, 특화된 템플릿을 참조하는 목적 이외로 템플릿 템플릿 파라미터를 사용했을 경우, 즉 그 파라미터를 다른 템플릿의 템플릿 템플릿 인수로서 건네주려고 하면 발생합니다.

예)
template <template <class T> class U>
class foo;
template <template <class T> class U>
class bar
{
    U x;  //
에러:  특화가 아닙니다
    U<U> y;  // OK:  특화의 목적으로, 템플릿     
                //인수로서 사용됩니다
    U<bar> z;  // OK:  특화의 참조에 사용됩니다
};

E2122  함수 호출이 미처리 예외'value'에 의해서 주소'addr'로 종료했다 

버그시의 평가중의 식에 미처리의 예외를 생성해 종료하는 함수 호출이 포함되어 있는 경우는, 이 메세지가 생성됩니다. 예를 들어, 디버거의 평가 다이얼로그로 식 foo()+1의 평가를 요구해, 함수 foo()  의 실행에 의해서 GPfault가 발생하는 경우는, 이 에러 메세지가 생성됩니다.
이 메세지는, 식의 평가 결과가 표시되는 감시식 윈도우에도 표시됩니다.

E2191 '__far16'는 '__pascal' 또는 decl' 가 있는 경우에 한해서 사용할 수 있다

이것은 내부 compile error입니다. 키워드__far16가 키워드 __pascal 또는 __cdecl 의 어느 쪽이든 같은 선언에 혼재하고 있는 경우는, 컴파일러가 이 메시지를 생성합니다.

E2198 식의 표시 형식을 지정하는 형태가 올바르지 않다

사용하지 않습니다.

E2196 멤버 함수'function'의 주소를 취득할 수 없다
클래스 멤버 함수의 주소를 받는 식이 있습니다만, 이 멤버 함수는 디버그중의 프로그램에 발견되지 않았습니다. 이 메세지는, 평가 모듈이 생성합니다.

+ Recent posts