aboutsummaryrefslogtreecommitdiffhomepage
path: root/absl/types
diff options
context:
space:
mode:
Diffstat (limited to 'absl/types')
-rw-r--r--absl/types/compare.h6
-rw-r--r--absl/types/compare_test.cc4
2 files changed, 4 insertions, 6 deletions
diff --git a/absl/types/compare.h b/absl/types/compare.h
index 7fed308..50361d6 100644
--- a/absl/types/compare.h
+++ b/absl/types/compare.h
@@ -452,8 +452,10 @@ namespace compare_internal {
// Helper functions to do a boolean comparison of two keys given a boolean
// or three-way comparator.
-constexpr bool compare_result_as_less_than(const bool r) { return r; }
-constexpr bool compare_result_as_less_than(const int r) { return r < 0; }
+// SFINAE prevents implicit conversions to bool (such as from int).
+template <typename Bool,
+ absl::enable_if_t<std::is_same<bool, Bool>::value, int> = 0>
+constexpr bool compare_result_as_less_than(const Bool r) { return r; }
constexpr bool compare_result_as_less_than(const absl::weak_ordering r) {
return r < 0;
}
diff --git a/absl/types/compare_test.cc b/absl/types/compare_test.cc
index dd0388c..3a85542 100644
--- a/absl/types/compare_test.cc
+++ b/absl/types/compare_test.cc
@@ -200,10 +200,6 @@ TEST(CompareResultAsLessThan, SanityTest) {
EXPECT_FALSE(absl::compare_internal::compare_result_as_less_than(false));
EXPECT_TRUE(absl::compare_internal::compare_result_as_less_than(true));
- EXPECT_TRUE(absl::compare_internal::compare_result_as_less_than(-1));
- EXPECT_FALSE(absl::compare_internal::compare_result_as_less_than(0));
- EXPECT_FALSE(absl::compare_internal::compare_result_as_less_than(1));
-
EXPECT_TRUE(
absl::compare_internal::compare_result_as_less_than(weak_ordering::less));
EXPECT_FALSE(absl::compare_internal::compare_result_as_less_than(