From d2c5e27247fbdca4d122c4de7f52376634ea6b7f Mon Sep 17 00:00:00 2001 From: Song Date: Wed, 14 Aug 2024 11:25:29 +0800 Subject: [PATCH 1/2] fix(c++): add support to std::vector for CreateVector --- include/flatbuffers/flatbuffer_builder.h | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/include/flatbuffers/flatbuffer_builder.h b/include/flatbuffers/flatbuffer_builder.h index 9ceca8207b6..96e9dfae1f3 100644 --- a/include/flatbuffers/flatbuffer_builder.h +++ b/include/flatbuffers/flatbuffer_builder.h @@ -795,7 +795,7 @@ template class FlatBufferBuilderImpl { /// buffer as a `vector`. /// @return Returns a typed `Offset` into the serialized data indicating /// where the vector is stored. - template> + template, typename = std::enable_if_t>> Offset> CreateVector(const std::vector &v) { return CreateVector(data(v), v.size()); } @@ -809,7 +809,8 @@ template class FlatBufferBuilderImpl { // vector may be implemented using a bit-set, so we can't access it as // an array. Instead, read elements manually. // Background: https://isocpp.org/blog/2012/11/on-vectorbool - Offset> CreateVector(const std::vector &v) { + template, typename = std::enable_if_t>> + Offset> CreateVector(const std::vector &v) { StartVector(v.size()); for (auto i = v.size(); i > 0;) { PushElement(static_cast(v[--i])); From 6d36720bdcb02b1c516ee464e50af426faf996c0 Mon Sep 17 00:00:00 2001 From: songruining Date: Wed, 21 Aug 2024 14:08:04 +0800 Subject: [PATCH 2/2] chore: support c++11 --- include/flatbuffers/flatbuffer_builder.h | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/include/flatbuffers/flatbuffer_builder.h b/include/flatbuffers/flatbuffer_builder.h index 96e9dfae1f3..98da6fd5aef 100644 --- a/include/flatbuffers/flatbuffer_builder.h +++ b/include/flatbuffers/flatbuffer_builder.h @@ -795,7 +795,7 @@ template class FlatBufferBuilderImpl { /// buffer as a `vector`. /// @return Returns a typed `Offset` into the serialized data indicating /// where the vector is stored. - template, typename = std::enable_if_t>> + template, typename = typename std::enable_if::value>::type> Offset> CreateVector(const std::vector &v) { return CreateVector(data(v), v.size()); } @@ -809,7 +809,7 @@ template class FlatBufferBuilderImpl { // vector may be implemented using a bit-set, so we can't access it as // an array. Instead, read elements manually. // Background: https://isocpp.org/blog/2012/11/on-vectorbool - template, typename = std::enable_if_t>> + template, typename = typename std::enable_if::value>::type> Offset> CreateVector(const std::vector &v) { StartVector(v.size()); for (auto i = v.size(); i > 0;) {