I am using libclang to do some basic reflection of C++. I am creating a translation unit for a header and then visiting all the tree elements using the cursors, in some cases I fall back onto the qualtypes to get the necessary information out. The problem is right now that the cursor types libclang returns are incorrect. For the example header file below:

```
#include <vector>
#include <string>

namespace SomeNamespace
{
    struct B
    {
        std::string m_string;
        std::vector<float> m_vector;
    };
}

```

I parse it using **clang\_parseTranslationUnit2** with the following inputs: 

**Args:**
"-x", "c++"

**Options:**
CXTranslationUnit\_DetailedPreprocessingRecord | CXTranslationUnit\_SkipFunctionBodies | CXTranslationUnit\_Incomplete;

Now when visiting the fields for struct B I get:

**CXType\_Int** for the cursor to m\_vector instead of **CXtype\_Unexposed**

but for the **std::string** member m\_string, I get **CXType\_Unexposed** which allows me to visit the field and extract the necessary info. When visiting the field for the string I correctly get the "namespace" then "typeref" cursor types.

I am completely out of ideas as to what is going on, why does lib clang fail to understand the std::vector type?

I got latest on the libclang version on June 1st, 2015.