xref: /llvm-project/libcxx/test/std/thread/futures/futures.errors/future_category.pass.cpp (revision fbdf684fae5243e7a9ff50dd4abdc5b55e6aa895)
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: no-threads
10 
11 // <future>
12 
13 // const error_category& future_category();
14 
15 #include <future>
16 #include <cstring>
17 #include <cassert>
18 
19 #include "test_macros.h"
20 
21 // See https://llvm.org/D65667
22 struct StaticInit {
23     const std::error_category* ec;
~StaticInitStaticInit24     ~StaticInit() {
25         assert(std::strcmp(ec->name(), "future") == 0);
26     }
27 };
28 static StaticInit foo;
29 
main(int,char **)30 int main(int, char**)
31 {
32     {
33         const std::error_category& ec = std::future_category();
34         assert(std::strcmp(ec.name(), "future") == 0);
35     }
36 
37     {
38         foo.ec = &std::future_category();
39         assert(std::strcmp(foo.ec->name(), "future") == 0);
40     }
41 
42     return 0;
43 }
44