> 백엔드 개발 > C++ > C 20에서 Variadic 템플릿 함수와 함께 `std::source_location`을 어떻게 사용할 수 있나요?

C 20에서 Variadic 템플릿 함수와 함께 `std::source_location`을 어떻게 사용할 수 있나요?

Linda Hamilton
풀어 주다: 2024-10-29 11:47:02
원래의
193명이 탐색했습니다.

How Can You Use `std::source_location` with Variadic Template Functions in C  20?

Variadic 템플릿 함수와 함께 std::source_location 사용 시 장애 극복

C 20의 강력한 기능인 Variadic 템플릿 함수는 다음을 허용합니다. 임의 개수의 인수 처리. 그러나 호출 컨텍스트 정보를 캡처하는 수단인 std::source_location을 이러한 함수와 통합하는 것은 어려운 일입니다.

Variadic 매개변수와의 충돌

Variadic 매개변수가 상주해야 합니다. 함수 시그니처 끝에 std::source_location을 통합할 때 장애물이 됩니다.

해결책 1: 추론 가이드 구현

이 문제는 다음을 도입하여 피할 수 있습니다. 호출 구문을 변환하는 추론 가이드:

<code class="cpp">template <typename... Ts>
struct debug
{
    debug(Ts&&... ts, const std::source_location& loc = std::source_location::current());
};

template <typename... Ts>
debug(Ts&&...) -> debug<Ts...>;</code>
로그인 후 복사

이 설정에서 함수 서명은 변경되지 않고 추론 가이드가 격차를 해소합니다.

<code class="cpp">int main()
{
    debug(5, 'A', 3.14f, "foo"); // Call converted to debug<int, char, float, const char*>
}</code>
로그인 후 복사

이 솔루션은 이점을 유지합니다. std::source_location을 사용하고 가변 템플릿 함수에 대한 원활한 구문을 보장합니다.

위 내용은 C 20에서 Variadic 템플릿 함수와 함께 `std::source_location`을 어떻게 사용할 수 있나요?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
저자별 최신 기사
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿