forked from OSchip/llvm-project
[libc++][test] Clean up libcxx/test/support/MoveOnly.h
Remove copy and copy assignment rather than have them as private declarations. They are superfluous given the move and move assignment. As a drive-by, also specialize `std::hash` without reopening `namespace std`. Differential Revision: https://reviews.llvm.org/D118502
This commit is contained in:
parent
da0e5b885b
commit
81cc834a48
|
@ -28,14 +28,14 @@ int main(int, char**) {
|
|||
{
|
||||
MoveOnly mo[] = {MoveOnly{3}};
|
||||
// expected-error@array:* {{to_array requires copy constructible elements}}
|
||||
// expected-error@array:* {{calling a private constructor}}
|
||||
// expected-error@array:* {{call to implicitly-deleted copy constructor of 'MoveOnly'}}
|
||||
std::to_array(mo); // expected-note {{requested here}}
|
||||
}
|
||||
|
||||
{
|
||||
const MoveOnly cmo[] = {MoveOnly{3}};
|
||||
// expected-error@array:* {{to_array requires move constructible elements}}
|
||||
// expected-error@array:* {{calling a private constructor}}
|
||||
// expected-error@array:* {{call to implicitly-deleted copy constructor of 'MoveOnly'}}
|
||||
std::to_array(std::move(cmo)); // expected-note {{requested here}}
|
||||
}
|
||||
|
||||
|
|
|
@ -18,9 +18,6 @@
|
|||
|
||||
class MoveOnly
|
||||
{
|
||||
MoveOnly(const MoveOnly&);
|
||||
MoveOnly& operator=(const MoveOnly&);
|
||||
|
||||
int data_;
|
||||
public:
|
||||
constexpr MoveOnly(int data = 1) : data_(data) {}
|
||||
|
@ -53,18 +50,15 @@ public:
|
|||
friend void operator,(T t, U u) = delete;
|
||||
};
|
||||
|
||||
namespace std {
|
||||
|
||||
template <>
|
||||
struct hash<MoveOnly>
|
||||
struct std::hash<MoveOnly>
|
||||
{
|
||||
typedef MoveOnly argument_type;
|
||||
typedef size_t result_type;
|
||||
constexpr size_t operator()(const MoveOnly& x) const {return x.get();}
|
||||
};
|
||||
|
||||
}
|
||||
|
||||
#endif // TEST_STD_VER >= 11
|
||||
|
||||
#endif // MOVEONLY_H
|
||||
|
|
Loading…
Reference in New Issue