Files
clang-p2996/libcxx/test/std/thread/thread.threads/thread.thread.class/thread.thread.id/eq.pass.cpp
Adrian Vogelsgesang 2d34cb74b5 [libc++] Implement thread::id comparators as free functions
So far, the `thread::id` comparators were implemented as hidden friends.
This was non-conforming and lead to incorrectly rejected C++ code, as
can be seen in the linked Github issue.

Fixes https://github.com/llvm/llvm-project/issues/56187

Differential Revision: https://reviews.llvm.org/D131430
2022-08-10 11:39:50 -07:00

42 lines
1.1 KiB
C++

//===----------------------------------------------------------------------===//
//
// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
// See https://llvm.org/LICENSE.txt for license information.
// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
//
//===----------------------------------------------------------------------===//
//
// UNSUPPORTED: no-threads
// <thread>
// class thread::id
// bool operator==(thread::id x, thread::id y);
// bool operator!=(thread::id x, thread::id y);
#include <thread>
#include <cassert>
#include "test_macros.h"
int main(int, char**)
{
std::thread::id id0;
std::thread::id id1;
id1 = id0;
assert( (id1 == id0));
assert(!(id1 != id0));
id1 = std::this_thread::get_id();
assert(!(id1 == id0));
assert( (id1 != id0));
// Regression tests for https://github.com/llvm/llvm-project/issues/56187
// libc++ previously declared the comparison operators as hidden friends
// which was non-conforming.
assert(!std::operator==(id1, id0));
assert(std::operator!=(id1, id0));
return 0;
}