From 0dcd46233fe3d7bcdcf7e8568758d997edb33e7b Mon Sep 17 00:00:00 2001 From: ruben Date: Sat, 7 Dec 2019 21:40:39 +0000 Subject: [PATCH] Added operator== between rows and owning rows --- include/mysql/impl/container_equals.hpp | 6 +++--- include/mysql/row.hpp | 16 ++++++++++++++-- 2 files changed, 17 insertions(+), 5 deletions(-) diff --git a/include/mysql/impl/container_equals.hpp b/include/mysql/impl/container_equals.hpp index 3a81bc6a..f206ea13 100644 --- a/include/mysql/impl/container_equals.hpp +++ b/include/mysql/impl/container_equals.hpp @@ -9,10 +9,10 @@ namespace mysql namespace detail { -template +template inline bool container_equals( - const std::vector& lhs, - const std::vector& rhs + const std::vector& lhs, + const std::vector& rhs ) { if (lhs.size() != rhs.size()) return false; diff --git a/include/mysql/row.hpp b/include/mysql/row.hpp index ddc66d70..29fa7282 100644 --- a/include/mysql/row.hpp +++ b/include/mysql/row.hpp @@ -43,11 +43,23 @@ public: inline bool operator==(const row& lhs, const row& rhs) { return lhs.values() == rhs.values(); } inline bool operator!=(const row& lhs, const row& rhs) { return !(lhs == rhs); } -inline bool operator==(const std::vector& lhs, const std::vector& rhs) +// Allow comparisons between vectors of rows and owning rows +template < + typename RowTypeLeft, + typename RowTypeRight, + typename=std::enable_if_t && std::is_base_of_v> +> +inline bool operator==(const std::vector& lhs, const std::vector& rhs) { return detail::container_equals(lhs, rhs); } -inline bool operator!=(const std::vector& lhs, const std::vector& rhs) + +template < + typename RowTypeLeft, + typename RowTypeRight, + typename=std::enable_if_t && std::is_base_of_v> +> +inline bool operator!=(const std::vector& lhs, const std::vector& rhs) { return !(lhs == rhs); }