에서 분리 나는 표준 라이브러리 (source)에 std::disjunction
의 구현을 본 적이 :구현 : 표준 라이브러리
template<class...> struct disjunction : std::false_type { };
template<class B1> struct disjunction<B1> : B1 { };
template<class B1, class... Bn>
struct disjunction<B1, Bn...>
: std::conditional_t<bool(B1::value), B1, disjunction<Bn...>> { };
내가 B1
로 disjunction<B1>
을 전문으로 할 필요가 궁금합니다. 왜 내 순진한 구현보다 나은가요?
template<class...> struct or_t
: std::false_type {};
template<class B1, class... Bn> struct or_t<B1, Bn...>
: std::integral_constant<bool, bool(B1::value) || bool(or_t<Bn...>::value)> {};
'std :: disjunction' 단락. – Zereges
@Zereges 이것은 대답 일 수 있습니다;) – YSC
이것은 확실히 표준 라이브러리 구현이 아닙니다 ... –