템플릿 매개 변수 목록의 템플릿 매개 변수에서 이전 템플릿 매개 변수로 제공되는 형식의 형식 정의에 액세스 할 수 있는지 궁금합니다.템플릿 매개 변수 목록에서 이전 템플릿 매개 변수의 typedef에 액세스 하시겠습니까?
#include <iostream>
template<typename V>
struct TypeHolder {
typedef V value_type;
};
template<typename T, T::value_type v>
struct ValueHolder {
const static typename T::value_type value = v;
};
int main() {
typedef TypeHolder<int> IntTypeHolder;
typedef ValueHolder<IntTypeHolder,5> Five;
std::cout << Five::value << std::endl;
return 0;
}
위 예제를 컴파일하면 다음과 같은 오류가 발생했습니다 :
[email protected]:~$ g++ -o cpptest test.cpp
test.cpp:8:25: error: 'T::value_type' is not a type
이것은 잘못된 구문으로 인한 것입니까 아니면 C++에서 가능하지 않은 것입니까?
첫 번째 문제는 구조체 정의 끝에 세미콜론이 누락되었습니다. 나는 그것을 수정하고 더 관련있는 오류로 업데이트했다. 내가 잘못했는지 알려주세요. –