컴파일러 오류 C3408
'attribute': 특성을 템플릿 정의에 사용할 수 없습니다.
템플릿 정의에는 특성을 적용할 수 없습니다.
예시
다음 샘플에서는 C3408을 생성합니다.
// C3408.cpp
// compile with: /c
template <class T> struct PTS {
enum {
IsPointer = 0,
IsPointerToDataMember = 0
};
};
template <class T>
[coclass] // C3408
struct PTS<T*> {
enum {
IsPointer = 1,
IsPointerToDataMember = 0
};
};
template
<class T, class U>
struct PTS<T U::*> {
enum {
IsPointer = 1,
IsPointerToDataMember = 1
};
};
struct S{};
extern "C" int printf(const char*,...);
int main() {
S s, *pS;
int S::*ptm;
printf("PTS<S>::IsPointer == %d PTS<S>::IsPointerToDataMember == %d\n", PTS<S>::IsPointer, PTS<S>:: IsPointerToDataMember);
printf("PTS<S*>::IsPointer == %d PTS<S*>::IsPointerToDataMember == %d\n", PTS<S*>::IsPointer, PTS<S*>:: IsPointerToDataMember);
printf("PTS<int S::*>::IsPointer == %d PTS<int S::*>::IsPointerToDataMember == %d\n", PTS<int S::*>::IsPointer, PTS<int S::*>:: IsPointerToDataMember);
}