std::enable_if 이해: 목적 및 구현 해독
std::enable_if의 본질은 특정 상황에서 파악되지만, 복잡한 점, 특히 두 번째 인수와 템플릿 문 내의 std::enable_if에 대한 할당은 여전히 수수께끼로 남아 있습니다. 작동 방식을 더 깊이 탐구하면 이러한 미스터리가 풀릴 것입니다.
std::enable_if
std::enable_if의 필수 요소는 다음과 같이 정의된 특수 템플릿입니다.
template struct enable_if {};
template struct enable_if { typedef T type; };
결정적으로 유형 별칭 typedef T 유형은 Cond가 true인 경우에만 정의됩니다.
사용법 공개
다음 선언을 고려하세요.
template
typename std::enable_if<:numeric_limits>::is_integer, void>::type foo(const T &bar) { isInt(bar); }
여기서 foo의 반환 유형은 std::enable_if<:numeric_limits>::is_integer, void>::type으로 정의됩니다. std::numeric_limits
두 번째 인수 설명
표기법:
template::value, int>::type = 0>
void foo(const T& bar) { isInt(); }
= 0은 두 번째 템플릿 매개변수를 기본값으로 사용합니다. 이렇게 하면 std::enable_if 매개변수가 기본값이 아닌 경우 두 개의 템플릿 매개변수를 요구하는 것과는 반대로 foo
주목할 만한 세부 정보
부인 성명: 제공된 모든 리소스는 부분적으로 인터넷에서 가져온 것입니다. 귀하의 저작권이나 기타 권리 및 이익이 침해된 경우 자세한 이유를 설명하고 저작권 또는 권리 및 이익에 대한 증거를 제공한 후 이메일([email protected])로 보내주십시오. 최대한 빨리 처리해 드리겠습니다.
Copyright© 2022 湘ICP备2022001581号-3