Merge changes Idde36437,Id477959d,I68027fa8,I8e6cf710

* changes:
  Update SPIR-V Tools to 82b378d67
  Squashed 'third_party/SPIRV-Tools/' changes from 8a5500656..82b378d67
  Update SPIR-V Headers to 7845730ca
  Squashed 'third_party/SPIRV-Headers/' changes from 979924c8b..7845730ca
diff --git a/src/Device/Memset.hpp b/src/Device/Memset.hpp
index 877d10b..870559f 100644
--- a/src/Device/Memset.hpp
+++ b/src/Device/Memset.hpp
@@ -38,6 +38,7 @@
 	Memset(T *object, int val)
 	{
 		static_assert(std::is_base_of<Memset<T>, T>::value, "Memset<T> must only clear the memory of a type of which it is a base class");
+		static_assert(!std::is_polymorphic<T>::value, "Memset<T> must not be used with classes that have virtual functions");
 		::memset(object, 0, sizeof(T));
 	}