是否有任何特定情况您不能正确使用std::conjunction
/std::disjunction
并且不使用更“基本”(即语言功能而不是库功能)折叠表达&&
/ ||
?
例子:
// func is enabled if all Ts... have the same type
template<typename T, typename... Ts>
std::enable_if_t<std::conjunction_v<std::is_same<T, Ts>...> >
func(T, Ts...) {
// TODO something to show
}
对比
// func is enabled if all Ts... have the same type
template<typename T, typename... Ts>
std::enable_if_t<(std::is_same<T, Ts> &&...)>
func(T, Ts...) {
// TODO something to show
}
使用折叠表达式的版本更简短,通常更易读(尽管对此可能有不同的看法)。所以我不明白为什么将它与折叠表达式一起添加到库中。