forked from OSchip/llvm-project
[libc++] Make MoveOnly constexpr-friendly
This is necessary when writing constexpr tests.
This commit is contained in:
parent
429f030899
commit
a4b8ee6422
|
@ -23,18 +23,18 @@ class MoveOnly
|
|||
|
||||
int data_;
|
||||
public:
|
||||
MoveOnly(int data = 1) : data_(data) {}
|
||||
MoveOnly(MoveOnly&& x)
|
||||
constexpr MoveOnly(int data = 1) : data_(data) {}
|
||||
constexpr MoveOnly(MoveOnly&& x)
|
||||
: data_(x.data_) {x.data_ = 0;}
|
||||
MoveOnly& operator=(MoveOnly&& x)
|
||||
constexpr MoveOnly& operator=(MoveOnly&& x)
|
||||
{data_ = x.data_; x.data_ = 0; return *this;}
|
||||
|
||||
int get() const {return data_;}
|
||||
constexpr int get() const {return data_;}
|
||||
|
||||
bool operator==(const MoveOnly& x) const {return data_ == x.data_;}
|
||||
bool operator< (const MoveOnly& x) const {return data_ < x.data_;}
|
||||
MoveOnly operator+(const MoveOnly& x) const { return MoveOnly{data_ + x.data_}; }
|
||||
MoveOnly operator*(const MoveOnly& x) const { return MoveOnly{data_ * x.data_}; }
|
||||
constexpr bool operator==(const MoveOnly& x) const {return data_ == x.data_;}
|
||||
constexpr bool operator< (const MoveOnly& x) const {return data_ < x.data_;}
|
||||
constexpr MoveOnly operator+(const MoveOnly& x) const { return MoveOnly{data_ + x.data_}; }
|
||||
constexpr MoveOnly operator*(const MoveOnly& x) const { return MoveOnly{data_ * x.data_}; }
|
||||
};
|
||||
|
||||
namespace std {
|
||||
|
@ -44,7 +44,7 @@ struct hash<MoveOnly>
|
|||
{
|
||||
typedef MoveOnly argument_type;
|
||||
typedef size_t result_type;
|
||||
std::size_t operator()(const MoveOnly& x) const {return x.get();}
|
||||
constexpr std::size_t operator()(const MoveOnly& x) const {return x.get();}
|
||||
};
|
||||
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue