From a5fdf4b410d54acdccdfc57e682d0af79c547af6 Mon Sep 17 00:00:00 2001 From: Charles Cabergs Date: Fri, 9 Jan 2026 13:27:16 +0100 Subject: [PATCH] Add draft to allow char containers except strings --- tests/message.cpp | 17 +++++++++++++++++ zmq.hpp | 3 ++- 2 files changed, 19 insertions(+), 1 deletion(-) diff --git a/tests/message.cpp b/tests/message.cpp index 645d806..db6267c 100644 --- a/tests/message.cpp +++ b/tests/message.cpp @@ -48,6 +48,23 @@ TEST_CASE("message constructor with iterators", "[message]") CHECK(0 == memcmp(data, hi_msg.data(), 2)); } +TEST_CASE("message constructor with ranges", "[message]") +{ + SECTION("trivial type") + { + const std::vector v{1,2,3}; + const zmq::message_t msg(v); + CHECK(3u * sizeof(int) == hi_msg.size()); + } + SECTION("char type") + { + const std::vector hi{'H', 'i'}; + const zmq::message_t hi_msg(hi); + CHECK(2u == hi_msg.size()); + CHECK(0 == memcmp(data, hi_msg.data(), 2)); + } +} + TEST_CASE("message constructor with size", "[message]") { const zmq::message_t msg(5); diff --git a/zmq.hpp b/zmq.hpp index 2f4d0e0..3665ab4 100644 --- a/zmq.hpp +++ b/zmq.hpp @@ -476,8 +476,9 @@ class message_t typename = typename std::enable_if< detail::is_range::value && ZMQ_IS_TRIVIALLY_COPYABLE(detail::range_value_t) - && !detail::is_char_type>::value && !std::is_same::value>::type> + && !std::is_same::value>::type> + && !std::is_same::value>::type> explicit message_t(const Range &rng) : message_t(detail::ranges::begin(rng), detail::ranges::end(rng)) {