make_tuple<int,bool>(1,true)
을 작성하거나 make_tuple(1,true)
을 쓸 수 있으며 컴파일러는 유형을 추론합니다. 이 기능은 내가 작성한 코드에 사용할 수 있습니까? 아니면 액세스 할 수없는 컴파일러에 내장되어 있습니까?make_tuple 에서처럼 형식 공제를 사용하는 무언가를 쓸 수 있습니까?
0
A
답변
1
템플릿 인수 공제 (이 항목의 적절한 이름)는 모든 함수 템플릿의 표준에 따라야합니다. 뒤따라야하는 프로세스는 C++ 11, 14.8.2 절에서 설명합니다.
0
컴파일러는 공제가 명확한 경우 유형을 추론 할 수 있습니다. 그렇지 않으면 템플릿 인수 형태로 컴파일러에 대한 힌트를 제공해야 할 수도 있습니다.
0
make_tuple 함수는 일반적인 함수 템플릿 일뿐입니다. 당신도 똑같은 일을 할 수 있습니다.
1
다음은 예입니다 :
template <typename... Ts>
tuple<Ts...> my_make_tuple(Ts... ts)
{
return tuple<Ts...>(ts...);
}
참고 :이 완벽 전달이나 다른 트릭을 사용하지 않습니다. 그것은 단지 여러분이 인자 공제를하는 함수를 어떻게 작성할 수 있는지에 대한 예입니다.