hans added a reviewer: mstorsjo. hans added a comment. +mstorsjo for thoughts about Windows code, even if this might not apply to mingw.
In D145271#4172636 <https://reviews.llvm.org/D145271#4172636>, @wolfgangp wrote: > A customer complained about the following code (I'm obscuring the class > names) compiling with MSVC but > rejected by clang: > > template <class T> > class __declspec(dllimport) A > { > }; > > void func() > { > // local class with internal linkage > class B: public A<B> > { > }; > } Oh I see, it's not intentionally trying to dllimport/export a local class, the problem is really dllimport/exporting a class template instantiated with a local class as template argument. The problem can be hit without inheritance too: template <typename> struct __declspec(dllimport) Base { }; void f() { struct Local { }; Base<Local> x; } error: 'Base<Local>' must have external linkage when declared 'dllimport' It still seems like the export/import there is an accident since `Base<f::Local>` can't really be referenced from outside the file anyway. Perhaps rather than giving `Base<f::Local>` external linkage to allow it to be imported/exported, the better fix would be to drop its dllimport/export attribute when instantiated with a local type? CHANGES SINCE LAST ACTION https://reviews.llvm.org/D145271/new/ https://reviews.llvm.org/D145271 _______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits