[PATCH] D105951: [clang] P2266 implicit moves STL workaround

Melanie Blower via Phabricator via cfe-commits cfe-commits at lists.llvm.org
Thu Jul 15 10:06:22 PDT 2021


mibintc added a comment.

Intel compiles VS2019 #include files regularly with clang, and the file <filesystem> compiled with -std:c++latest encounters this error report, which @aaron.ballman suggests is related to this effort.

  In file included from tst_incl_filesystem.cpp:2:
  c:/Program files (x86)/Microsoft Visual Studio/2019/Professional/VC/Tools/MSVC/14.28.29910/include\filesystem(3099,20): error: call to deleted constructor of 'unique_ptr<wchar_t []>'
              return _Cleaned_link;
                     ^~~~~~~~~~~~~
  c:/Program files (x86)/Microsoft Visual Studio/2019/Professional/VC/Tools/MSVC/14.28.29910/include\memory(3566,5): note: 'unique_ptr' has been explicitly marked deleted here
      unique_ptr(const unique_ptr&) = delete;
      ^
  In file included from tst_incl_filesystem.cpp:2:
  c:/Program files (x86)/Microsoft Visual Studio/2019/Professional/VC/Tools/MSVC/14.28.29910/include\filesystem(3125,16): error: call to deleted constructor of 'unique_ptr<wchar_t []>'
          return _Cleaned_link;
                 ^~~~~~~~~~~~~
  c:/Program files (x86)/Microsoft Visual Studio/2019/Professional/VC/Tools/MSVC/14.28.29910/include\memory(3566,5): note: 'unique_ptr' has been explicitly marked deleted here
      unique_ptr(const unique_ptr&) = delete;

I used creduce with the same command line, looking for that error diagnostic with std:c++latest versus no diagnostic with std:c++20 ; this smaller test case, with a few edits, is the result

  # 1 "test.cpp" 1
  # 2 "test.cpp" 3
  namespace std {
  template <int a> struct b { static constexpr c = a; };
  template <bool a> using d = b<a>;
  using e = d<true>;
  template <bool> using f = int;
  template <bool, class, class> using g = int;
  template <class...> constexpr am = e ::c;
  template <class> constexpr au = false;
  class h {
  public:
    template <class i> h(i);
    template <class> using j = f<am<>>;
    template <class = j<g<au<int>, int, int>>> h(h &) = delete;
  };
  h k() {
    h l(new wchar_t);
    return l;
  }
  }
  # 22 "test.cpp" 2


Repository:
  rG LLVM Github Monorepo

CHANGES SINCE LAST ACTION
  https://reviews.llvm.org/D105951/new/

https://reviews.llvm.org/D105951



More information about the cfe-commits mailing list