diff options
Diffstat (limited to 'cpp/include/Ice/OutputStream.h')
-rw-r--r-- | cpp/include/Ice/OutputStream.h | 15 |
1 files changed, 15 insertions, 0 deletions
diff --git a/cpp/include/Ice/OutputStream.h b/cpp/include/Ice/OutputStream.h index cf90475ceec..67994253814 100644 --- a/cpp/include/Ice/OutputStream.h +++ b/cpp/include/Ice/OutputStream.h @@ -312,6 +312,21 @@ public: writeAll(ve...); } + template<size_t I = 0, typename... Te> + typename std::enable_if<I == sizeof...(Te), void>::type + writeAll(std::tuple<Te...> tuple) + { + // Do nothing. Either tuple is empty or we are at the end. + } + + template<size_t I = 0, typename... Te> + typename std::enable_if<I < sizeof...(Te), void>::type + writeAll(std::tuple<Te...> tuple) + { + write(std::get<I>(tuple)); + writeAll<I + 1, Te...>(tuple); + } + template<typename T> void writeAll(std::initializer_list<int> tags, const IceUtil::Optional<T>& v) { |