[PATCH] MS ABI: Propagate class-level DLL attributes to class template specialization bases (PR11170)

Hans Wennborg hans at chromium.org
Mon Jun 23 17:28:22 PDT 2014

On Mon, Jun 23, 2014 at 5:13 PM, Reid Kleckner <rnk at google.com> wrote:
> Does your code handle explicit template specializations with inconsistent DLL attributes?  I'm thinking of this test case:
>   template <typename T> struct Foo { T get() { return {}; } };
>   template <> struct __declspec(dllimport) Foo<int> { int get() { return 42; } };
>   struct __declspec(dllexport) Bar : Foo<int> {
>     int baz() { return Foo<int>::get(); }
>   };
>   Bar b;
> MSVC appears to import Foo<int>::get(), but if I understand your code correctly, it will diagnose this.

Interesting. I guess they don't try to propagate the attribute to
explicit specializations, which makes sense. I'll see if I can make my
patch not warn here, and check if this applies to partial
specializations too.

More information about the cfe-commits mailing list