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); }