From dd2cfabddb6d3e7e7d55130349f3022deefca896 Mon Sep 17 00:00:00 2001 From: Edoardo Sanguineti Date: Wed, 12 Jul 2023 12:32:09 -0700 Subject: [PATCH] [libc++] add test for latch ctor Currently, there are no tests to confirm without a doubt the constructor of latch is really constexpr and explicit. I think this would be an addition that it would not harm to have. In another revision, I was asked to add tests for an almost identical case which made me consider adding this test for the latch class too. Reviewed By: #libc, philnik Spies: philnik, libcxx-commits, kristof.beyls Differential Revision: https://reviews.llvm.org/D154957 --- .../std/thread/thread.latch/ctor.pass.cpp | 35 +++++++++++++++++++ 1 file changed, 35 insertions(+) create mode 100644 libcxx/test/std/thread/thread.latch/ctor.pass.cpp diff --git a/libcxx/test/std/thread/thread.latch/ctor.pass.cpp b/libcxx/test/std/thread/thread.latch/ctor.pass.cpp new file mode 100644 index 000000000000..1983f6409cb5 --- /dev/null +++ b/libcxx/test/std/thread/thread.latch/ctor.pass.cpp @@ -0,0 +1,35 @@ +//===----------------------------------------------------------------------===// +// +// 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 +// UNSUPPORTED: c++03, c++11 + +// + +// inline constexpr explicit latch(ptrdiff_t __expected); + +// Make sure that the ctor of latch is constexpr and explicit. + +#include + +#include "test_convertible.h" + +static_assert(!test_convertible(), "This constructor must be explicit"); + +constexpr bool test() { + std::latch l(5); + (void)l; + return true; +} + +int main(int, char**) { + test(); + static_assert(test(), ""); + + return 0; +}