C 14에 도입된 decltype(auto) 관용구를 사용하면 자동 선언에서 주어진 항목에 대해 decltype 규칙을 사용할 수 있습니다. 표현. 기본 용도는 함수의 반환 유형 추론을 위한 것이지만 다른 귀중한 응용 프로그램도 있습니다.
일반 코드에서 decltype(auto)을 사용하면 반환의 완벽한 전달이 가능합니다. 기본 유형을 모르고 유형을 입력합니다. 이는 일반 함수에 특히 유용합니다.
template<class Fun, class... Args> decltype(auto) Example(Fun fun, Args&&... args) { return fun(std::forward<Args>(args)...); }
decltype(auto)하면 반복 템플릿에서 반환 유형 추론을 지연시켜 무한 재귀를 방지할 수도 있습니다. 예:
template<int i> struct Int {}; constexpr auto iter(Int<0>) -> Int<0>; template<int i> constexpr auto iter(Int<i>) -> decltype(auto) { return iter(Int<i-1>{}); }
이러한 기본 응용 프로그램 외에도 decltype(auto)에는 C 초안 표준(N3936)에 설명된 대로 다양한 용도가 있습니다.
변수 초기화:
decltype(auto) x3d = i; // decltype(x3d) is int
포인터 선언:
decltype(auto)*x7d = &i; // decltype(x7d) is int*
위 내용은 C에서 `decltype(auto)`의 응용 프로그램은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!