blob: 24f657ecebabd39968ed6ae8c80a854b2caa796c [file] [log] [blame]
// { dg-do run { target c++11 } }
// PR libstdc++/103501
#include <set>
#include <testsuite_hooks.h>
#include <testsuite_allocator.h>
struct Y
{
int i;
Y(int i) : i(i) { }
Y(const Y& y) noexcept : i(y.i) { }
Y(Y&& y) noexcept : i(y.i) { y.i = -y.i; }
bool operator<(const Y& rhs) const { return i < rhs.i; }
};
int main()
{
using Alloc = __gnu_test::uneq_allocator<Y>;
std::multiset<Y, std::less<Y>, Alloc> s1{ {1, 2, 3}, Alloc(1)};
std::multiset<Y, std::less<Y>, Alloc> s2{ std::move(s1), Alloc(2) };
const Y* prev = nullptr;
for (const Y& y : s1)
{
if (prev)
VERIFY( !(y < *prev) );
prev = &y;
}
}