가변 인수에 대한 한 가지 유형 지정
이 문서에서는 가변 함수 또는 가변 템플릿 함수에 전달된 모든 인수가 올바른지 확인하는 방법을 탐색합니다. 배열, 벡터 등의 추가 데이터 구조를 사용하지 않고 동일한 유형의 structs.
가변 함수 및 템플릿 함수
가변 함수 및 가변 템플릿 함수를 사용하면 함수가 알 수 없는 개수의 인수를 허용할 수 있습니다. 그러나 인수에 대해 어떠한 유형 제약도 적용하지 않습니다.
유형 안전성 강화
모든 인수가 동일한 유형임을 보장하기 위해 다음을 수행할 수 있습니다. 단계:
예:
다음 코드는 이 기술을 구현하는 방법을 보여줍니다.
template<typename R, typename...> struct fst { typedef R type; }; template<typename ...Args> typename fst<void, typename enable_if< is_convertible<Args, ToType>::value >::type... >::type f(Args...);
사용법:
이 코드 f에 전달된 모든 인수가 ToType 유형으로 변환될 수 있는지 확인합니다. 변환할 수 없는 인수가 있으면 컴파일러에서 오류가 발생합니다.
변환-나중에 접근 방식:
또는 배열에서 다음으로 변환하는 단계를 알고 있는 경우 원하는 유형을 선택하려면 다음을 사용할 수 있습니다. 접근 방식:
template<typename ...Items> dragon_list_t make_dragon_list(Items... maidens) { std::array<Maiden, sizeof...(Items)> arr = {{ maidens ... }}; // here be dragons }
결론:
가변 템플릿 함수와 SFINAE를 활용하면 가변 인수에 유형 안전성을 적용하여 모든 인수가 동일하도록 보장할 수 있습니다. 유형. 이를 통해 추가 데이터 구조 없이 동종 데이터에 대해 작동하는 함수를 만들 수 있습니다.
위 내용은 추가 데이터 구조를 사용하지 않고 가변 함수 또는 템플릿 함수에 전달된 모든 인수가 동일한 유형인지 어떻게 확인할 수 있습니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!