diff --git a/src/AST/ClassExtensions.cs b/src/AST/ClassExtensions.cs
index a44a8d0a..178418de 100644
--- a/src/AST/ClassExtensions.cs
+++ b/src/AST/ClassExtensions.cs
@@ -269,7 +269,7 @@ namespace CppSharp.AST
             if (desugared is TemplateParameterType)
                 return true;
             var tagType = desugared as TagType;
-            if (tagType?.IsDependent == true)
+            if (tagType?.Declaration is Class @class && @class.HasDependentValueFieldInLayout())
                 return true;
             var templateType = desugared as TemplateSpecializationType;
             if (templateType?.Arguments.Any(
diff --git a/tests/NamespacesBase/NamespacesBase.h b/tests/NamespacesBase/NamespacesBase.h
index 2a0f0628..ed351e2b 100644
--- a/tests/NamespacesBase/NamespacesBase.h
+++ b/tests/NamespacesBase/NamespacesBase.h
@@ -79,6 +79,12 @@ public:
     private:
         T field;
     };
+private:
+    union
+    {
+        int i;
+        float* f;
+    };
 };
 
 template <typename T>
diff --git a/tests/NamespacesDerived/NamespacesDerived.Tests.cs b/tests/NamespacesDerived/NamespacesDerived.Tests.cs
index 09366402..b2a3d4c8 100644
--- a/tests/NamespacesDerived/NamespacesDerived.Tests.cs
+++ b/tests/NamespacesDerived/NamespacesDerived.Tests.cs
@@ -15,7 +15,6 @@ public class NamespaceDerivedTests
         using (new DerivedFromSecondaryBaseInDependency()) { }
         using (var der2 = new Derived2())
         using (der2.LocalTypedefSpecialization) { }
-        Assert.That(typeof(Derived2).Assembly.GetTypes().Any(t => t.FullName.Contains("Std.Vector")), Is.True);
     }
 
     [Test]
diff --git a/tests/NamespacesDerived/NamespacesDerived.h b/tests/NamespacesDerived/NamespacesDerived.h
index 3ad9f7b8..abed58c5 100644
--- a/tests/NamespacesDerived/NamespacesDerived.h
+++ b/tests/NamespacesDerived/NamespacesDerived.h
@@ -62,6 +62,7 @@ public:
 
     TemplateClass<int> getTemplate();
     IndependentFields<int> getIndependentSpecialization();
+    IndependentFields<void*> getPointerOnlySpecialization() { return IndependentFields<void*>(); }
     typedef DependentFields<int> LocalTypedefSpecialization;
     LocalTypedefSpecialization getLocalTypedefSpecialization();
     Abstract* getAbstract();
@@ -71,6 +72,7 @@ private:
     TemplateClass<DependentFields<Derived>> nestedSpecialization;
     IndependentFields<int> independentSpecialization;
     IndependentFields<Derived> independentExternalSpecialization;
+    IndependentFields<Derived*> independentExternalSpecializationPointer;
     IndependentFields<Derived>::Nested nestedInExternalSpecialization;
     std::unordered_map<int, Derived> externalSpecializationOnly;
 };