[C++] 클래스템플릿의 멤버템플릿 호출시 파싱 모호성 문제
C++은 알다시피 생각없이 문법을 기워올려서 말도안되게 복잡하고 사람을 망치는 성향이 있다.
이것도 그런 쓸데없는 조잡성 중 하나다.
The typename disambiguator for dependent names 라고 한다.
자. 만약 클래스 안에 함수 템플릿이 있다면, 다음과 같이 호출할 수 있다.
이건 별문제가 없다.
이번엔 함수 템플릿을 클래스 템플릿으로 감싸보겠다.
여기까지도 큰 문제는 없다.
그런데, 저기서 템플릿 구체화 타입을, 직접 지정하는 것이 아니라 또다른 템플릿 매개변수를 넘기려고 하면 문제가 생긴다.
이런 오류가 생긴다.
foo
이걸 해결하려면 다음과 같이 template 키워드를 쑤셔넣어줘야한다.
위에서는 객체를 기반으로 동적호출을 했지만, 스코프나 this 등으로 호출할 때도 같은 문제가 발생할 수 있다.
그럴때도 마찬가지로 식별자 왼쪽에 template을 써주면 된다.
그렇다.