diff options
| author | David Blaikie <dblaikie@gmail.com> | 2015-03-03 18:39:00 +0000 |
|---|---|---|
| committer | David Blaikie <dblaikie@gmail.com> | 2015-03-03 18:39:00 +0000 |
| commit | e6c4eda5ddd75c9207527e3cb683347e62aedbbb (patch) | |
| tree | fc0ffb5343dfbdec1ed550d34131d2b9ee792600 | |
| parent | f7e1e758287a82aac12657ccdda4cb0523dad54a (diff) | |
| download | bcm5719-llvm-e6c4eda5ddd75c9207527e3cb683347e62aedbbb.tar.gz bcm5719-llvm-e6c4eda5ddd75c9207527e3cb683347e62aedbbb.zip | |
[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.
llvm-svn: 231099
| -rw-r--r-- | llvm/include/llvm/ADT/BitVector.h | 2 | ||||
| -rw-r--r-- | llvm/include/llvm/ADT/SmallBitVector.h | 2 |
2 files changed, 3 insertions, 1 deletions
diff --git a/llvm/include/llvm/ADT/BitVector.h b/llvm/include/llvm/ADT/BitVector.h index 0dbe810d904..f58dd7356c7 100644 --- a/llvm/include/llvm/ADT/BitVector.h +++ b/llvm/include/llvm/ADT/BitVector.h @@ -53,7 +53,7 @@ public: BitPos = Idx % BITWORD_SIZE; } - ~reference() {} + reference(const reference&) = default; reference &operator=(reference t) { *this = bool(t); diff --git a/llvm/include/llvm/ADT/SmallBitVector.h b/llvm/include/llvm/ADT/SmallBitVector.h index 22e8ccd8ea0..ae3d645396f 100644 --- a/llvm/include/llvm/ADT/SmallBitVector.h +++ b/llvm/include/llvm/ADT/SmallBitVector.h @@ -66,6 +66,8 @@ public: public: reference(SmallBitVector &b, unsigned Idx) : TheVector(b), BitPos(Idx) {} + reference(const reference&) = default; + reference& operator=(reference t) { *this = bool(t); return *this; |

