[Small]BitVector::reference: Explicitly default copy construction as it is deprecated...
authorDavid Blaikie <dblaikie@gmail.com>
Tue, 3 Mar 2015 18:39:00 +0000 (18:39 +0000)
committerDavid Blaikie <dblaikie@gmail.com>
Tue, 3 Mar 2015 18:39:00 +0000 (18:39 +0000)
commitf5e27edc7b838920375583cf20d9023e988e8d14
tree14a7bd893ef164d250a03c7edb13239133544a21
parent24a7df36905e2bec604eec56e2426ff399a83093
[Small]BitVector::reference: Explicitly default copy construction as it is deprecated in C++11 in the presence of explicit copy assignment.

I tried making these private & friended to the BitVector, but that
didn't work - there's one use of BitVector::reference in Clang that
actually copies it into a local variable & uses it from there, rather
than just using the result of op[] in a temporary expression.

Whether or not this is desired is debatable (we could just fix that one
use in Clang) & it's not clear which way the C++ standard falls on this
for std::bitset's reference type (it has the same bug at least in
libstdc++, but Clang's -Wdeprecated doesn't flag it, because it's in a
standard header)

While it was only BitVector::reference's copy ctor that was referenced
by user code, I made SmallBitVector::reference's copy ctor public too,
for consistency.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@231099 91177308-0d34-0410-b5e6-96231b3b80d8
include/llvm/ADT/BitVector.h
include/llvm/ADT/SmallBitVector.h