1//===----------------------------------------------------------------------===//
2//
3// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
4// See https://llvm.org/LICENSE.txt for license information.
5// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
6//
7//===----------------------------------------------------------------------===//
8
9// UNSUPPORTED: c++03, c++11, c++14, c++17, c++20
10
11// <flat_map>
12
13// struct sorted_equivalent_t { explicit sorted_equivalent_t() = default; };
14// inline constexpr sorted_equivalent_t sorted_equivalent{};
15
16#include <cassert>
17#include <concepts>
18#include <flat_map>
19#include <type_traits>
20
21template <class T>
22void implicit_test(T) {}
23
24template <class T>
25concept HasImplicitDefaultCtor = requires { implicit_test<T>({}); };
26
27static_assert(std::is_default_constructible_v<std::sorted_equivalent_t>);
28static_assert(std::is_trivially_default_constructible_v<std::sorted_equivalent_t>);
29static_assert(!HasImplicitDefaultCtor<std::sorted_equivalent_t>);
30
31constexpr bool test() {
32 {
33 [[maybe_unused]] std::sorted_equivalent_t s;
34 }
35 {
36 [[maybe_unused]] std::same_as<const std::sorted_equivalent_t&> decltype(auto) s = (std::sorted_equivalent);
37 }
38 {
39 [[maybe_unused]] std::same_as<const std::sorted_equivalent_t> decltype(auto) copy = std::sorted_equivalent;
40 }
41
42 return true;
43}
44
45int main(int, char**) {
46 test();
47 static_assert(test());
48
49 return 0;
50}
51

source code of libcxx/test/std/containers/container.adaptors/flat.map.syn/sorted_equivalent.pass.cpp