Index: mojo/public/cpp/bindings/lib/bindings_internal.h |
diff --git a/mojo/public/cpp/bindings/lib/bindings_internal.h b/mojo/public/cpp/bindings/lib/bindings_internal.h |
index a8f95b2300bdb8143a8adecbb89afa9345f75830..4b5bb49d994183b6a303928354ef662571464afd 100644 |
--- a/mojo/public/cpp/bindings/lib/bindings_internal.h |
+++ b/mojo/public/cpp/bindings/lib/bindings_internal.h |
@@ -76,6 +76,18 @@ struct IsHandle { |
enum { value = IsBaseOf<Handle, H>::value }; |
}; |
+template <typename T> |
+struct IsUnionDataType { |
+ template <typename U> |
+ static YesType Test(const typename U::MojomUnionDataType*); |
+ |
+ template <typename U> |
+ static NoType Test(...); |
+ |
+ static const bool value = |
+ sizeof(Test<T>(0)) == sizeof(YesType) && !IsConst<T>::value; |
+}; |
+ |
template <typename T, bool move_only = IsMoveOnlyType<T>::value> |
struct WrapperTraits; |