[llvm-bugs] [Bug 35483] New: clang-cl /MDd fails to compile vector with a custom allocator

via llvm-bugs llvm-bugs at lists.llvm.org
Thu Nov 30 12:05:34 PST 2017


https://bugs.llvm.org/show_bug.cgi?id=35483

            Bug ID: 35483
           Summary: clang-cl /MDd fails to compile vector with a custom
                    allocator
           Product: clang
           Version: trunk
          Hardware: PC
                OS: other
            Status: NEW
          Severity: enhancement
          Priority: P
         Component: -New Bugs
          Assignee: unassignedclangbugs at nondot.org
          Reporter: veronika.levkevich at gmail.com
                CC: llvm-bugs at lists.llvm.org

clang-cl.exe fails to compile std::vector with a custom allocator when /MDd is
provided as an argument. The issue seems to be triggered by the _DEBUG define.

Code sample to reproduce the issue:
===================
#include <vector>
template<typename T>
  class fuzzer_allocator: public std::allocator<T> {
    public:
      template<class Other>
      struct rebind { typedef fuzzer_allocator<Other> other;  };
  };
int some_func() {
  std::vector<int, fuzzer_allocator<int>> v;
  return v.size();
}
===================

"clang-cl.exe /MDd repro.cc" gives the following output:

In file included from .\repro.cc:2:
C:\Program Files (x86)\Microsoft Visual
Studio\2017\Professional\VC\Tools\MSVC\14.11.25503\include\vector(555,12): 
error: no matching constructor for initialization of
'std::_Vector_alloc<std::_Vec_base_types<int,
      (anonymous namespace)::fuzzer_allocator<int> > >::_Alproxy' (aka
'(anonymous namespace)::fuzzer_allocator<std::_Container_proxy>')
                _Alproxy _Proxy_allocator(_Getal());
                         ^                ~~~~~~~~
C:\Program Files (x86)\Microsoft Visual
Studio\2017\Professional\VC\Tools\MSVC\14.11.25503\include\vector(506,3): 
note: in instantiation of member function
'std::_Vector_alloc<std::_Vec_base_types<int,
      (anonymous namespace)::fuzzer_allocator<int> > >::_Free_proxy' requested
here
                _Free_proxy();
                ^
C:\Program Files (x86)\Microsoft Visual
Studio\2017\Professional\VC\Tools\MSVC\14.11.25503\include\vector(683,2): 
note: in instantiation of member function
'std::_Vector_alloc<std::_Vec_base_types<int,
      (anonymous namespace)::fuzzer_allocator<int> > >::~_Vector_alloc'
requested here
        vector() _NOEXCEPT_COND(is_nothrow_default_constructible<_Alty>::value)
        ^
.\repro.cc(15,43):  note: in instantiation of member function 'std::vector<int,
(anonymous namespace)::fuzzer_allocator<int> >::vector' requested here
  std::vector<int, fuzzer_allocator<int>> v;
                                          ^
.\repro.cc(7,9):  note: candidate constructor (the implicit copy constructor)
not viable: no known conversion from 'fuzzer_allocator<int>' to 'const
fuzzer_allocator<std::_Container_proxy>' for 1st argument
  class fuzzer_allocator: public std::allocator<T> {
        ^
.\repro.cc(7,9):  note: candidate constructor (the implicit move constructor)
not viable: no known conversion from 'fuzzer_allocator<int>' to
'fuzzer_allocator<std::_Container_proxy>' for 1st argument
.\repro.cc(7,9):  note: candidate constructor (the implicit default
constructor) not viable: requires 0 arguments, but 1 was provided
===================

The same code compiles fine when /MDd is not provided.

OS version: Windows 10 Enterprise 1607
MSVC C++ version: 14.11.25503
clang version 6.0.0 (trunk 318667)

-- 
You are receiving this mail because:
You are on the CC list for the bug.
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/llvm-bugs/attachments/20171130/a6c4b270/attachment.html>


More information about the llvm-bugs mailing list