다음 샘플 코드에는 어떤 문제가 있습니까? GCC에서는 컴파일되지 않습니다. 왜?C++ 템플릿의 중첩 이름 지정자를 도와 줄 사람이 있습니까?
template <class TA>
struct A
{
template <class TAB> struct B;
};
template <class TC>
struct C {};
template <class TD>
struct D
{
template <class TTD> class T {};
};
template<class TA>
template<class TBA>
struct A<TA>::B : C<typename D<TA>::T<TBA> >
{
int foo;
};
GCC 4.3.4 출력 : 템플릿 이름에 대한
error: template argument 1 is invalid
error: expected `{' before ‘>’ token
error: expected unqualified-id before ‘>’ token
문제를하시기 바랍니다 설명하기 위해 귀하의 질문에 제목을 수정합니다. –
어떤 곳에서는'typename'이 누락 된 것 같습니다. 너무 집중해서 피곤했다. 나는 그것을 다른 누군가에게 남겨 둘 것이다. 하지만 질문의 일부분을 다시 말해야한다고 생각합니다. 누군가가 지금부터 1 년 후에 질문과 대답을 찾는다 고 상상해보십시오. 당신의 좌절감은 오래 가지 못할 것입니다. 단어는 머무른다. – 0xC0000022L
좋은 질문 ... 그런 복잡한 유형의 템플릿을 보지 못했습니다! – iammilind