Replaces ugly decltype with std::declval in enumerate
Replaces ugly decltype with std::declval in compress
Replaces ugly decltype with std::declval in cycle
Replaces ugly decltype with std::declval in dropwhile
Replaces ugly decltype with std::declval in filter
Replaces ugly decltype with std::declval in takewhile