[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