c++ Default template argument
글쓴이: voider / 작성시간: 월, 2003/11/03 - 3:56오후
template < typename T, typename T_INT = T::INT > class T_int{ T_INT a; };
이코드는 VC 7.1 에서 잘 돌아가거든요...
근데 g++에선 되질 않네요
클라이언트 코드가
T_int<have_Int_type> t; // have_int_type 에는 INT라는 타입이 정의되어있다
이와 같다면 이것은 컴파일 되는게 합당하지 않을까요????
제가 잘못한것인지 다른 사용법이 있는건지
g++은 지원하지 않는건지 도 모르겠네요!![/code]
Forums:
표준을 자세히 살펴본 것은 아닙니다만...
표준에서는, 해당 템플릿 선언에 등장하는 T::INT 가 과연 타입인지 변수인지 컴파일러로서는 알 수도 없고 알아서도 안 된다고 들었습니다. (제가 맞게 알고 있다면 VC++ 7.1 이 비표준인 것이지요)
제 생각으로는 T::INT 가 변수가 아닌 타입임을 알려주기 위해서는 typename 을 한 번 더 사용하여
라고 해야 할 것 같습니다. 이 쪽은 g++ 3.2.2 에서 컴파일됩니다.
맞습니다...역시 제가 개떡같이 알고 있었군요....감사합니다..
맞습니다...
역시 제가 개떡같이 알고 있었군요....
감사합니다....
typename이 그런 용도로 사용되는건지도 모르고 사용했었군요...
-- 아쉬운 하루 되세요 --
댓글 달기