Example for P0013R1 __cpp_lib_logical_traits
template<typename... T>
using condition =
#if __cpp_lib_logical_traits
conjunction<is_pointer<decay_t<T>>...>;
#else
bool_constant<(is_pointer<decay_t<T>>::value && ...)>;
#endif
template<typename... T>
enable_if_t<condition<T...>::value>
foo(T&&...) { }
template<typename... T>
enable_if_t<!condition<T...>::value>
foo(T&&...) { }
Using conjunction is more efficient at compile-time, because it short
circuits and doesn't evaluate every expression in the pack expansion
if it doesn't need to.
_______________________________________________
Features mailing list
[email protected]
http://www.open-std.org/mailman/listinfo/features