value comparison - deduct return type automatically (fixes MSVC C4800)
This commit is contained in:
parent
09163f969d
commit
c0724a6d95
1 changed files with 19 additions and 13 deletions
|
@ -81,54 +81,60 @@ struct both_arithmetic : std::integral_constant<bool,
|
|||
struct equals
|
||||
{
|
||||
template <typename T>
|
||||
static bool apply(T const& lhs, T const& rhs)
|
||||
static auto apply(T const& lhs, T const& rhs)
|
||||
-> decltype(lhs == rhs)
|
||||
{
|
||||
return std::equal_to<T>()(lhs, rhs);
|
||||
return lhs == rhs;
|
||||
}
|
||||
};
|
||||
|
||||
struct not_equal
|
||||
{
|
||||
template <typename T>
|
||||
static bool apply(T const& lhs, T const& rhs)
|
||||
static auto apply(T const& lhs, T const& rhs)
|
||||
->decltype(lhs != rhs)
|
||||
{
|
||||
return std::not_equal_to<T>()(lhs, rhs);
|
||||
return lhs != rhs;
|
||||
}
|
||||
};
|
||||
|
||||
struct greater_than
|
||||
{
|
||||
template <typename T>
|
||||
static bool apply(T const& lhs, T const& rhs)
|
||||
static auto apply(T const& lhs, T const& rhs)
|
||||
->decltype(lhs > rhs)
|
||||
{
|
||||
return std::greater<T>()(lhs, rhs);
|
||||
return lhs > rhs;
|
||||
}
|
||||
};
|
||||
|
||||
struct greater_or_equal
|
||||
{
|
||||
template <typename T>
|
||||
static bool apply(T const& lhs, T const& rhs)
|
||||
static auto apply(T const& lhs, T const& rhs)
|
||||
->decltype(lhs >= rhs)
|
||||
{
|
||||
return std::greater_equal<T>()(lhs, rhs);
|
||||
return lhs >= rhs;
|
||||
}
|
||||
};
|
||||
|
||||
struct less_than
|
||||
{
|
||||
template <typename T>
|
||||
static bool apply(T const& lhs, T const& rhs)
|
||||
static auto apply(T const& lhs, T const& rhs)
|
||||
->decltype(lhs < rhs)
|
||||
{
|
||||
return std::less<T>()(lhs, rhs);
|
||||
return lhs < rhs;
|
||||
}
|
||||
};
|
||||
|
||||
struct less_or_equal
|
||||
{
|
||||
template <typename T>
|
||||
static bool apply(T const& lhs, T const& rhs)
|
||||
static auto apply(T const& lhs, T const& rhs)
|
||||
->decltype(lhs <= rhs)
|
||||
{
|
||||
return std::less_equal<T>()(lhs, rhs);
|
||||
return lhs <= rhs;
|
||||
}
|
||||
};
|
||||
|
||||
|
@ -137,7 +143,7 @@ struct less_or_equal
|
|||
template <typename Op, bool default_result>
|
||||
struct comparison
|
||||
{
|
||||
// special case for unicode_strings
|
||||
// special case for unicode_strings (fixes MSVC C4800)
|
||||
bool operator() (value_unicode_string const& lhs,
|
||||
value_unicode_string const& rhs) const
|
||||
{
|
||||
|
|
Loading…
Add table
Reference in a new issue