112a9d9c8Sopenharmony_ci// bindgen-flags: --enable-cxx-namespaces --opaque-type 'zoidberg::Template<zoidberg::Bar>'  --with-derive-hash --with-derive-partialeq --with-derive-eq -- -std=c++14
212a9d9c8Sopenharmony_ci
312a9d9c8Sopenharmony_cinamespace zoidberg {
412a9d9c8Sopenharmony_ci
512a9d9c8Sopenharmony_citemplate <typename T>
612a9d9c8Sopenharmony_ciclass Template {
712a9d9c8Sopenharmony_ci    T member;
812a9d9c8Sopenharmony_ci};
912a9d9c8Sopenharmony_ci
1012a9d9c8Sopenharmony_cistruct Foo {
1112a9d9c8Sopenharmony_ci    char c;
1212a9d9c8Sopenharmony_ci};
1312a9d9c8Sopenharmony_ci
1412a9d9c8Sopenharmony_cistruct Bar {
1512a9d9c8Sopenharmony_ci    int i;
1612a9d9c8Sopenharmony_ci};
1712a9d9c8Sopenharmony_ci
1812a9d9c8Sopenharmony_ciclass ContainsInstantiation {
1912a9d9c8Sopenharmony_ci    Template<Foo> not_opaque;
2012a9d9c8Sopenharmony_ci};
2112a9d9c8Sopenharmony_ci
2212a9d9c8Sopenharmony_ciclass ContainsOpaqueInstantiation {
2312a9d9c8Sopenharmony_ci    // We should not generate a layout test for this instantiation, and it
2412a9d9c8Sopenharmony_ci    // should appear as an opaque blob of bytes in
2512a9d9c8Sopenharmony_ci    // `ContainsOpaqueInstantiation`'s type definition.
2612a9d9c8Sopenharmony_ci    Template<Bar> opaque;
2712a9d9c8Sopenharmony_ci};
2812a9d9c8Sopenharmony_ci
2912a9d9c8Sopenharmony_ci}
30