blob: 79e347e17d5cc07eb5014897d85b1518b0ecc3c1 [file] [log] [blame]
// { dg-do compile { target c++11 } }
#include <mutex>
#include <chrono>
using namespace std;
struct Mutex
{
void lock();
void unlock();
bool try_lock();
bool try_lock_for(chrono::seconds);
bool try_lock_until(chrono::system_clock::time_point);
};
void
test_nodiscard(Mutex& m)
{
unique_lock<Mutex>(); // no warning
unique_lock<Mutex>{}; // no warning
unique_lock<Mutex>(m, defer_lock); // no warning
unique_lock<Mutex>{m, defer_lock}; // no warning
unique_lock<Mutex>{m}; // { dg-warning "ignoring return value" }
unique_lock<Mutex>{m, try_to_lock}; // { dg-warning "ignoring return value" }
unique_lock<Mutex>(m, try_to_lock); // { dg-warning "ignoring return value" }
unique_lock<Mutex>{m, adopt_lock}; // { dg-warning "ignoring return value" }
unique_lock<Mutex>(m, adopt_lock); // { dg-warning "ignoring return value" }
chrono::seconds reltime(1);
unique_lock<Mutex>{m, reltime}; // { dg-warning "ignoring return value" }
unique_lock<Mutex>(m, reltime); // { dg-warning "ignoring return value" }
chrono::system_clock::time_point abstime(reltime);
unique_lock<Mutex>{m, abstime}; // { dg-warning "ignoring return value" }
unique_lock<Mutex>(m, abstime); // { dg-warning "ignoring return value" }
}