C 11 SFINAE의 "즉시 컨텍스트" 이해
C 11 표준은 대체 실패로 인해 하드 컴파일이 발생하는 경우에 대한 조건을 지정합니다. 오류 또는 단순히 오버로드 해결 후보에서 템플릿을 삭제하는 소프트 오류입니다. 이 결정의 핵심 개념 중 하나는 "즉시 컨텍스트"입니다.
"즉시 컨텍스트"의 정의
표준에는 "즉시 컨텍스트"라는 용어가 간략하게 언급되어 있습니다. 그러나 정확한 정의는 명시적으로 제공되지 않습니다. 그러나 다음 텍스트와 함께 발견되는 경우가 많습니다.
Note: The evaluation of the substituted types and expressions can result in side effects such as instantiation of template specializations, generation of implicitly-defined functions, etc. Such side effects are not in the “immediate context” and can result in the program being ill-formed.
이 참고는 템플릿 인스턴스화 또는 암시적 함수 정의와 같은 대체 프로세스 중에 발생하는 모든 부작용이 대체 프로세스의 일부로 간주되지 않음을 나타냅니다. 즉각적인 컨텍스트.
즉시 대체 오류 확인 컨텍스트
즉시 컨텍스트에서 대체 오류가 발생하는지 확인하려면 다음 단계를 고려하세요.
예
다음을 고려하세요. 템플릿 및 대체 function:
template<typename T> void func(typename T::type* arg); template<> void func(...);
결론
즉시적 맥락의 개념을 이해하면 언제, 대체 오류로 인해 하드 컴파일 오류나 소프트 공제 실패가 발생하여 C 11에서 SFINAE를 효과적으로 사용할 수 있습니다.
위 내용은 C 11 SFINAE의 '즉시 컨텍스트'는 무엇이며 대체 실패에 어떤 영향을 줍니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!