[PATCH] D135154: Keep inherited dllimport/export attrs for explicit specialization of template class member functions
    Hans Wennborg via Phabricator via cfe-commits 
    cfe-commits at lists.llvm.org
       
    Wed Oct  5 03:54:48 PDT 2022
    
    
  
hans added a comment.
This did turn up a problem.
With this patch Clang treats the following (based on https://source.chromium.org/chromium/chromium/src/+/main:media/formats/hls/source_string.h;l=125) as invalid, and so does MSVC:
  template <typename> struct __declspec(dllexport) Foo {
      static Foo create();
  };
  
  // Don't allow creating Foo's of ints.
  template <> Foo<int> Foo<int>::create() = delete; // MSVC: attempting to delete a __declspec(dllexport) function
The dllimport case errors similarly.
I'm tempted to make Clang keep allowing this. The intent of the code is perfectly clear -- the user is trying to delete the function, not export/import it -- and I can't think of any good way for the user to work around the error.
(Besides this issue, at least Chromium builds cleanly with this patch.)
Repository:
  rG LLVM Github Monorepo
CHANGES SINCE LAST ACTION
  https://reviews.llvm.org/D135154/new/
https://reviews.llvm.org/D135154
    
    
More information about the cfe-commits
mailing list