summaryrefslogtreecommitdiff
path: root/cpp/include/Ice/OutputStream.h
diff options
context:
space:
mode:
Diffstat (limited to 'cpp/include/Ice/OutputStream.h')
-rw-r--r--cpp/include/Ice/OutputStream.h15
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)
{