cleaner pipe operator definition for ranges

master
Daniel Kolesa 2017-02-13 20:43:23 +01:00
parent fd6a47c223
commit 6ba3b93018
2 changed files with 5 additions and 3 deletions

View File

@ -27,7 +27,7 @@ enum FormatFlags {
FMT_FLAG_HASH = 1 << 4
};
struct format_error: public std::runtime_error {
struct format_error: std::runtime_error {
using std::runtime_error::runtime_error;
};

View File

@ -698,8 +698,10 @@ struct InputRange {
}
};
template<typename R, typename F, typename = std::enable_if_t<IsInputRange<R>>>
inline auto operator|(R &&range, F &&func) {
template<typename R, typename F>
inline auto operator|(R &&range, F &&func) ->
std::enable_if_t<IsInputRange<R>, decltype(func(std::forward<R>(range)))>
{
return func(std::forward<R>(range));
}