[%]
c++ 사용자들 템플릿 입문때 가장 짜증나는거 뭐였냐
익명(211.114)
2022-08-18 11:07
추천 0
#include <iostream>
template<typename T
>
struct Outer
{
template<typename U
>
struct Inner
{
template<typename V
>
static void nested_static()
{
std
::cout
<< "Outer<T>::Inner<U>::nested_static<V>\n";
}
template<typename V
>
void nested_instance()
{
std
::cout
<< "Outer<T>::Inner<U>::nested_instance<V>\n";
}
};
};
template<typename T
, typename U
, typename V
>
void test(typename Outer
<T
>::template Inner
<U
> &inner
)
{
inner
.template nested_instance
<V
>();
Outer
<T
>::template Inner
<U
>::template nested_static
<V
>();
}
int main()
{
Outer
<char>::Inner
<short> inner
;
test
<char, short, int>(inner
);
}
나는 typename, ::template, .template 앞에 붙여야 하는 경우였던거 같다
내가 쓰기도 짜증나고 남이 쓰는거 읽었을때 눈에 존나 안들어옴...
class 주는거랑 저게 뭐가다름
"class 주는거"가 뭔소리임
설마 템플릿 파라미터(아규먼트 말고) 앞에 붙이는 typename/class 병용가능 얘기 말하는거면 상관없는 내용이다
위 이야기는 타입 이름공간과 클래스/함수/변수 등의 이름공간 중 어디에서 찾아야하는지, 그리고 템플릿 기호가 연산자 기호와 헷갈릴수 있지 않은지 때문에 일어나는 기술적인 문제로 억지로 붙여야하는 규칙들임
::template 이런건 첨보네