Temporary header file '/tmp/HSK7d42Iyx/dump1.h' with the following content will be compiled to create GCC translation unit dump:

  // add defines
  #define __STDC_VERSION__ 201710L
#define _GXX_NULLPTR_T
#define CLUTTER_ENABLE_COMPOSITOR_API 1
#define _REGEX_NELTS(n)
#define _Atomic
#define PACKED
#define getaddrinfo_a(a,b,c,d)

  // add includes
  #include "/usr/include/relacy/atomic.hpp"
  #include "/usr/include/relacy/atomic_events.hpp"
  #include "/usr/include/relacy/atomic_fence.hpp"
  #include "/usr/include/relacy/backoff.hpp"
  #include "/usr/include/relacy/base.hpp"
  #include "/usr/include/relacy/cli.hpp"
  #include "/usr/include/relacy/cli_interlocked.hpp"
  #include "/usr/include/relacy/cli_var.hpp"
  #include "/usr/include/relacy/cli_volatile.hpp"
  #include "/usr/include/relacy/context.hpp"
  #include "/usr/include/relacy/context_addr_hash.hpp"
  #include "/usr/include/relacy/context_base.hpp"
  #include "/usr/include/relacy/context_base_impl.hpp"
  #include "/usr/include/relacy/context_bound_scheduler.hpp"
  #include "/usr/include/relacy/defs.hpp"
  #include "/usr/include/relacy/dyn_thread.hpp"
  #include "/usr/include/relacy/dyn_thread_ctx.hpp"
  #include "/usr/include/relacy/foreach.hpp"
  #include "/usr/include/relacy/full_search_scheduler.hpp"
  #include "/usr/include/relacy/history.hpp"
  #include "/usr/include/relacy/java.hpp"
  #include "/usr/include/relacy/java_atomic.hpp"
  #include "/usr/include/relacy/java_var.hpp"
  #include "/usr/include/relacy/java_volatile.hpp"
  #include "/usr/include/relacy/memory.hpp"
  #include "/usr/include/relacy/memory_order.hpp"
  #include "/usr/include/relacy/pch.hpp"
  #include "/usr/include/relacy/platform.hpp"
  #include "/usr/include/relacy/pthread.h"
  #include "/usr/include/relacy/random.hpp"
  #include "/usr/include/relacy/random_scheduler.hpp"
  #include "/usr/include/relacy/relacy.hpp"
  #include "/usr/include/relacy/relacy_cli.hpp"
  #include "/usr/include/relacy/relacy_java.hpp"
  #include "/usr/include/relacy/relacy_std.hpp"
  #include "/usr/include/relacy/rmw.hpp"
  #include "/usr/include/relacy/scheduler.hpp"
  #include "/usr/include/relacy/signature.hpp"
  #include "/usr/include/relacy/slab_allocator.hpp"
  #include "/usr/include/relacy/stdlib/condition_variable.hpp"
  #include "/usr/include/relacy/stdlib/event.hpp"
  #include "/usr/include/relacy/stdlib/mutex.hpp"
  #include "/usr/include/relacy/stdlib/pthread.hpp"
  #include "/usr/include/relacy/stdlib/semaphore.hpp"
  #include "/usr/include/relacy/stdlib/windows.hpp"
  #include "/usr/include/relacy/sync_var.hpp"
  #include "/usr/include/relacy/test_params.hpp"
  #include "/usr/include/relacy/test_result.hpp"
  #include "/usr/include/relacy/test_suite.hpp"
  #include "/usr/include/relacy/thread.hpp"
  #include "/usr/include/relacy/thread_base.hpp"
  #include "/usr/include/relacy/thread_local.hpp"
  #include "/usr/include/relacy/thread_local_ctx.hpp"
  #include "/usr/include/relacy/var.hpp"
  #include "/usr/include/relacy/volatile.hpp"
  #include "/usr/include/relacy/waitset.hpp"
  #include "/usr/include/relacy/windows.h"

  // add namespaces
  namespace rl{typedef int tmp_add_type_1;}
  rl::tmp_add_type_1 tmp_add_func_1(){return 0;};

  // add classes
  _G_fpos64_t* tmp_add_class_0;
  _G_fpos_t* tmp_add_class_1;
  _IO_cookie_io_functions_t* tmp_add_class_2;
  fiber_ctx_t* tmp_add_class_3;
  fiber_t* tmp_add_class_4;
  tms* tmp_add_class_5;
  ucontext_t* tmp_add_class_6;

The GCC parameters:
  gcc -fdump-lang-raw -fkeep-inline-functions -c -x c++ -fpermissive -w "/tmp/HSK7d42Iyx/dump1.h"  -I/usr/include/relacy

In file included from /usr/include/c++/12/bits/shared_ptr_atomic.h:33,
                 from /usr/include/c++/12/memory:78,
                 from /usr/include/relacy/pch.hpp:42,
                 from /usr/include/relacy/base.hpp:16,
                 from /usr/include/relacy/atomic.hpp:16,
                 from /tmp/HSK7d42Iyx/dump1.h:12:
/usr/include/c++/12/bits/atomic_base.h:273:51: error: macro "__glibcxx_constexpr_assert" passed 2 arguments, but takes just 1
  273 |       __glibcxx_assert(__b != memory_order_consume);
      |                                                   ^
In file included from /usr/include/c++/12/cstdlib:41,
                 from /usr/include/c++/12/stdlib.h:36,
                 from /usr/include/relacy/pch.hpp:28:
/usr/include/arm-linux-gnueabihf/c++/12/bits/c++config.h:544: note: macro "__glibcxx_constexpr_assert" defined here
  544 | # define __glibcxx_constexpr_assert(cond) \
      | 
/usr/include/c++/12/bits/atomic_base.h:274:51: error: macro "__glibcxx_constexpr_assert" passed 2 arguments, but takes just 1
  274 |       __glibcxx_assert(__b != memory_order_acquire);
      |                                                   ^
/usr/include/arm-linux-gnueabihf/c++/12/bits/c++config.h:544: note: macro "__glibcxx_constexpr_assert" defined here
  544 | # define __glibcxx_constexpr_assert(cond) \
      | 
/usr/include/c++/12/bits/atomic_base.h:275:51: error: macro "__glibcxx_constexpr_assert" passed 2 arguments, but takes just 1
  275 |       __glibcxx_assert(__b != memory_order_acq_rel);
      |                                                   ^
/usr/include/arm-linux-gnueabihf/c++/12/bits/c++config.h:544: note: macro "__glibcxx_constexpr_assert" defined here
  544 | # define __glibcxx_constexpr_assert(cond) \
      | 
/usr/include/c++/12/bits/atomic_base.h:285:51: error: macro "__glibcxx_constexpr_assert" passed 2 arguments, but takes just 1
  285 |       __glibcxx_assert(__b != memory_order_consume);
      |                                                   ^
/usr/include/arm-linux-gnueabihf/c++/12/bits/c++config.h:544: note: macro "__glibcxx_constexpr_assert" defined here
  544 | # define __glibcxx_constexpr_assert(cond) \
      | 
/usr/include/c++/12/bits/atomic_base.h:286:51: error: macro "__glibcxx_constexpr_assert" passed 2 arguments, but takes just 1
  286 |       __glibcxx_assert(__b != memory_order_acquire);
      |                                                   ^
/usr/include/arm-linux-gnueabihf/c++/12/bits/c++config.h:544: note: macro "__glibcxx_constexpr_assert" defined here
  544 | # define __glibcxx_constexpr_assert(cond) \
      | 
/usr/include/c++/12/bits/atomic_base.h:287:51: error: macro "__glibcxx_constexpr_assert" passed 2 arguments, but takes just 1
  287 |       __glibcxx_assert(__b != memory_order_acq_rel);
      |                                                   ^
/usr/include/arm-linux-gnueabihf/c++/12/bits/c++config.h:544: note: macro "__glibcxx_constexpr_assert" defined here
  544 | # define __glibcxx_constexpr_assert(cond) \
      | 
/usr/include/c++/12/bits/atomic_base.h:460:53: error: macro "__glibcxx_constexpr_assert" passed 2 arguments, but takes just 1
  460 |         __glibcxx_assert(__b != memory_order_acquire);
      |                                                     ^
/usr/include/arm-linux-gnueabihf/c++/12/bits/c++config.h:544: note: macro "__glibcxx_constexpr_assert" defined here
  544 | # define __glibcxx_constexpr_assert(cond) \
      | 
/usr/include/c++/12/bits/atomic_base.h:461:53: error: macro "__glibcxx_constexpr_assert" passed 2 arguments, but takes just 1
  461 |         __glibcxx_assert(__b != memory_order_acq_rel);
      |                                                     ^
/usr/include/arm-linux-gnueabihf/c++/12/bits/c++config.h:544: note: macro "__glibcxx_constexpr_assert" defined here
  544 | # define __glibcxx_constexpr_assert(cond) \
      | 
/usr/include/c++/12/bits/atomic_base.h:462:53: error: macro "__glibcxx_constexpr_assert" passed 2 arguments, but takes just 1
  462 |         __glibcxx_assert(__b != memory_order_consume);
      |                                                     ^
/usr/include/arm-linux-gnueabihf/c++/12/bits/c++config.h:544: note: macro "__glibcxx_constexpr_assert" defined here
  544 | # define __glibcxx_constexpr_assert(cond) \
      | 
/usr/include/c++/12/bits/atomic_base.h:473:53: error: macro "__glibcxx_constexpr_assert" passed 2 arguments, but takes just 1
  473 |         __glibcxx_assert(__b != memory_order_acquire);
      |                                                     ^
/usr/include/arm-linux-gnueabihf/c++/12/bits/c++config.h:544: note: macro "__glibcxx_constexpr_assert" defined here
  544 | # define __glibcxx_constexpr_assert(cond) \
      | 
/usr/include/c++/12/bits/atomic_base.h:474:53: error: macro "__glibcxx_constexpr_assert" passed 2 arguments, but takes just 1
  474 |         __glibcxx_assert(__b != memory_order_acq_rel);
      |                                                     ^
/usr/include/arm-linux-gnueabihf/c++/12/bits/c++config.h:544: note: macro "__glibcxx_constexpr_assert" defined here
  544 | # define __glibcxx_constexpr_assert(cond) \
      | 
/usr/include/c++/12/bits/atomic_base.h:475:53: error: macro "__glibcxx_constexpr_assert" passed 2 arguments, but takes just 1
  475 |         __glibcxx_assert(__b != memory_order_consume);
      |                                                     ^
/usr/include/arm-linux-gnueabihf/c++/12/bits/c++config.h:544: note: macro "__glibcxx_constexpr_assert" defined here
  544 | # define __glibcxx_constexpr_assert(cond) \
      | 
/usr/include/c++/12/bits/atomic_base.h:485:53: error: macro "__glibcxx_constexpr_assert" passed 2 arguments, but takes just 1
  485 |         __glibcxx_assert(__b != memory_order_release);
      |                                                     ^
/usr/include/arm-linux-gnueabihf/c++/12/bits/c++config.h:544: note: macro "__glibcxx_constexpr_assert" defined here
  544 | # define __glibcxx_constexpr_assert(cond) \
      | 
/usr/include/c++/12/bits/atomic_base.h:486:53: error: macro "__glibcxx_constexpr_assert" passed 2 arguments, but takes just 1
  486 |         __glibcxx_assert(__b != memory_order_acq_rel);
      |                                                     ^
/usr/include/arm-linux-gnueabihf/c++/12/bits/c++config.h:544: note: macro "__glibcxx_constexpr_assert" defined here
  544 | # define __glibcxx_constexpr_assert(cond) \
      | 
/usr/include/c++/12/bits/atomic_base.h:496:53: error: macro "__glibcxx_constexpr_assert" passed 2 arguments, but takes just 1
  496 |         __glibcxx_assert(__b != memory_order_release);
      |                                                     ^
/usr/include/arm-linux-gnueabihf/c++/12/bits/c++config.h:544: note: macro "__glibcxx_constexpr_assert" defined here
  544 | # define __glibcxx_constexpr_assert(cond) \
      | 
/usr/include/c++/12/bits/atomic_base.h:497:53: error: macro "__glibcxx_constexpr_assert" passed 2 arguments, but takes just 1
  497 |         __glibcxx_assert(__b != memory_order_acq_rel);
      |                                                     ^
/usr/include/arm-linux-gnueabihf/c++/12/bits/c++config.h:544: note: macro "__glibcxx_constexpr_assert" defined here
  544 | # define __glibcxx_constexpr_assert(cond) \
      | 
/usr/include/c++/12/bits/atomic_base.h:792:53: error: macro "__glibcxx_constexpr_assert" passed 2 arguments, but takes just 1
  792 |         __glibcxx_assert(__b != memory_order_acquire);
      |                                                     ^
/usr/include/arm-linux-gnueabihf/c++/12/bits/c++config.h:544: note: macro "__glibcxx_constexpr_assert" defined here
  544 | # define __glibcxx_constexpr_assert(cond) \
      | 
/usr/include/c++/12/bits/atomic_base.h:793:53: error: macro "__glibcxx_constexpr_assert" passed 2 arguments, but takes just 1
  793 |         __glibcxx_assert(__b != memory_order_acq_rel);
      |                                                     ^
/usr/include/arm-linux-gnueabihf/c++/12/bits/c++config.h:544: note: macro "__glibcxx_constexpr_assert" defined here
  544 | # define __glibcxx_constexpr_assert(cond) \
      | 
/usr/include/c++/12/bits/atomic_base.h:794:53: error: macro "__glibcxx_constexpr_assert" passed 2 arguments, but takes just 1
  794 |         __glibcxx_assert(__b != memory_order_consume);
      |                                                     ^
/usr/include/arm-linux-gnueabihf/c++/12/bits/c++config.h:544: note: macro "__glibcxx_constexpr_assert" defined here
  544 | # define __glibcxx_constexpr_assert(cond) \
      | 
/usr/include/c++/12/bits/atomic_base.h:805:53: error: macro "__glibcxx_constexpr_assert" passed 2 arguments, but takes just 1
  805 |         __glibcxx_assert(__b != memory_order_acquire);
      |                                                     ^
/usr/include/arm-linux-gnueabihf/c++/12/bits/c++config.h:544: note: macro "__glibcxx_constexpr_assert" defined here
  544 | # define __glibcxx_constexpr_assert(cond) \
      | 
/usr/include/c++/12/bits/atomic_base.h:806:53: error: macro "__glibcxx_constexpr_assert" passed 2 arguments, but takes just 1
  806 |         __glibcxx_assert(__b != memory_order_acq_rel);
      |                                                     ^
/usr/include/arm-linux-gnueabihf/c++/12/bits/c++config.h:544: note: macro "__glibcxx_constexpr_assert" defined here
  544 | # define __glibcxx_constexpr_assert(cond) \
      | 
/usr/include/c++/12/bits/atomic_base.h:807:53: error: macro "__glibcxx_constexpr_assert" passed 2 arguments, but takes just 1
  807 |         __glibcxx_assert(__b != memory_order_consume);
      |                                                     ^
/usr/include/arm-linux-gnueabihf/c++/12/bits/c++config.h:544: note: macro "__glibcxx_constexpr_assert" defined here
  544 | # define __glibcxx_constexpr_assert(cond) \
      | 
/usr/include/c++/12/bits/atomic_base.h:817:53: error: macro "__glibcxx_constexpr_assert" passed 2 arguments, but takes just 1
  817 |         __glibcxx_assert(__b != memory_order_release);
      |                                                     ^
/usr/include/arm-linux-gnueabihf/c++/12/bits/c++config.h:544: note: macro "__glibcxx_constexpr_assert" defined here
  544 | # define __glibcxx_constexpr_assert(cond) \
      | 
/usr/include/c++/12/bits/atomic_base.h:818:53: error: macro "__glibcxx_constexpr_assert" passed 2 arguments, but takes just 1
  818 |         __glibcxx_assert(__b != memory_order_acq_rel);
      |                                                     ^
/usr/include/arm-linux-gnueabihf/c++/12/bits/c++config.h:544: note: macro "__glibcxx_constexpr_assert" defined here
  544 | # define __glibcxx_constexpr_assert(cond) \
      | 
/usr/include/c++/12/bits/atomic_base.h:828:53: error: macro "__glibcxx_constexpr_assert" passed 2 arguments, but takes just 1
  828 |         __glibcxx_assert(__b != memory_order_release);
      |                                                     ^
/usr/include/arm-linux-gnueabihf/c++/12/bits/c++config.h:544: note: macro "__glibcxx_constexpr_assert" defined here
  544 | # define __glibcxx_constexpr_assert(cond) \
      | 
/usr/include/c++/12/bits/atomic_base.h:829:53: error: macro "__glibcxx_constexpr_assert" passed 2 arguments, but takes just 1
  829 |         __glibcxx_assert(__b != memory_order_acq_rel);
      |                                                     ^
/usr/include/arm-linux-gnueabihf/c++/12/bits/c++config.h:544: note: macro "__glibcxx_constexpr_assert" defined here
  544 | # define __glibcxx_constexpr_assert(cond) \
      | 
In file included from /usr/include/relacy/test_params.hpp:17,
                 from /usr/include/relacy/thread_local_ctx.hpp:17,
                 from /usr/include/relacy/context.hpp:17,
                 from /usr/include/relacy/relacy.hpp:18,
                 from /usr/include/relacy/pthread.h:17,
                 from /usr/include/arm-linux-gnueabihf/c++/12/bits/gthr-default.h:35,
                 from /usr/include/arm-linux-gnueabihf/c++/12/bits/gthr.h:148,
                 from /usr/include/c++/12/ext/atomicity.h:35,
                 from /usr/include/c++/12/bits/ios_base.h:39,
                 from /usr/include/c++/12/ios:42,
                 from /usr/include/c++/12/ostream:38,
                 from /usr/include/c++/12/iostream:39,
                 from /usr/include/relacy/pch.hpp:36:
/usr/include/relacy/test_result.hpp: In function ‘const char* rl::test_result_str(test_result_e)’:
/usr/include/relacy/test_result.hpp:104:14: error: ‘RL_VERIFY’ was not declared in this scope
  104 |     default: RL_VERIFY(false); return "UNKNOWN ERROR";
      |              ^~~~~~~~~
/usr/include/relacy/test_result.hpp:104:14: note: the macro ‘RL_VERIFY’ had not yet been defined
/usr/include/relacy/base.hpp:141: note: it was later defined here
  141 | #   define RL_VERIFY(x) (void)0
      | 
/usr/include/relacy/test_params.hpp: In function ‘const char* rl::format(scheduler_type_e)’:
/usr/include/relacy/test_params.hpp:45:5: error: ‘RL_VERIFY’ was not declared in this scope
   45 |     RL_VERIFY(false);
      |     ^~~~~~~~~
/usr/include/relacy/test_params.hpp:45:5: note: the macro ‘RL_VERIFY’ had not yet been defined
/usr/include/relacy/base.hpp:141: note: it was later defined here
  141 | #   define RL_VERIFY(x) (void)0
      | 
/usr/include/relacy/test_params.hpp:46:16: error: ‘logic_error’ is not a member of ‘std’
   46 |     throw std::logic_error("invalid scheduler type");
      |                ^~~~~~~~~~~
/usr/include/relacy/test_params.hpp: At global scope:
/usr/include/relacy/test_params.hpp:53:5: error: ‘iteration_t’ does not name a type
   53 |     iteration_t                 iteration_count;
      |     ^~~~~~~~~~~
/usr/include/relacy/test_params.hpp:62:5: error: ‘string’ does not name a type; did you mean ‘stdin’?
   62 |     string                      initial_state;
      |     ^~~~~~
      |     stdin
/usr/include/relacy/test_params.hpp:66:5: error: ‘iteration_t’ does not name a type
   66 |     iteration_t                 stop_iteration;
      |     ^~~~~~~~~~~
/usr/include/relacy/test_params.hpp:67:5: error: ‘string’ does not name a type; did you mean ‘stdin’?
   67 |     string                      test_name;
      |     ^~~~~~
      |     stdin
/usr/include/relacy/test_params.hpp:68:5: error: ‘string’ does not name a type; did you mean ‘stdin’?
   68 |     string                      final_state;
      |     ^~~~~~
      |     stdin
/usr/include/relacy/test_params.hpp: In constructor ‘rl::test_params::test_params()’:
/usr/include/relacy/test_params.hpp:72:9: error: ‘iteration_count’ was not declared in this scope
   72 |         iteration_count         = 1000;
      |         ^~~~~~~~~~~~~~~
/usr/include/relacy/test_params.hpp:73:41: error: ‘cout’ is not a member of ‘std’
   73 |         output_stream           = &std::cout;
      |                                         ^~~~
/usr/include/relacy/test_params.hpp:18:1: note: ‘std::cout’ is defined in header ‘<iostream>’; did you forget to ‘#include <iostream>’?
   17 | #include "test_result.hpp"
  +++ |+#include <iostream>
   18 | 
/usr/include/relacy/test_params.hpp:74:41: error: ‘cout’ is not a member of ‘std’
   74 |         progress_stream         = &std::cout;
      |                                         ^~~~
/usr/include/relacy/test_params.hpp:74:41: note: ‘std::cout’ is defined in header ‘<iostream>’; did you forget to ‘#include <iostream>’?
/usr/include/relacy/test_params.hpp:83:9: error: ‘stop_iteration’ was not declared in this scope
   83 |         stop_iteration          = 0;
      |         ^~~~~~~~~~~~~~
/usr/include/relacy/thread_local_ctx.hpp: At global scope:
/usr/include/relacy/thread_local_ctx.hpp:36:27: error: ‘thread_id_t’ has not been declared
   36 | template<typename base_t, thread_id_t thread_count>
      |                           ^~~~~~~~~~~
/usr/include/relacy/thread_local_ctx.hpp:40:41: error: expected ‘)’ before ‘thread_count_param’
   40 |     thread_local_contxt_impl(thread_id_t thread_count_param, test_params& params)
      |                             ~           ^~~~~~~~~~~~~~~~~~~
      |                                         )
/usr/include/relacy/thread_local_ctx.hpp:62:33: error: ‘thread_count’ was not declared in this scope; did you mean ‘sched_count’?
   62 |         intptr_t        value_ [thread_count];
      |                                 ^~~~~~~~~~~~
      |                                 sched_count
/usr/include/relacy/thread_local_ctx.hpp:66:14: error: expected nested-name-specifier before ‘vector’
   66 |     typename vector<entry>::type            entries_;
      |              ^~~~~~
/usr/include/relacy/thread_local_ctx.hpp:66:14: error: expected ‘;’ at end of member declaration
   66 |     typename vector<entry>::type            entries_;
      |              ^~~~~~
      |                    ;
/usr/include/relacy/thread_local_ctx.hpp:66:20: error: expected unqualified-id before ‘<’ token
   66 |     typename vector<entry>::type            entries_;
      |                    ^
In file included from /usr/include/relacy/context_base.hpp:17,
                 from /usr/include/relacy/context.hpp:18:
/usr/include/relacy/history.hpp:28:5: error: ‘thread_id_t’ does not name a type; did you mean ‘pthread_t’?
   28 |     thread_id_t thread_index_;
      |     ^~~~~~~~~~~
      |     pthread_t
/usr/include/relacy/history.hpp:29:5: error: ‘debug_info’ does not name a type
   29 |     debug_info info_;
      |     ^~~~~~~~~~
/usr/include/relacy/history.hpp:34:30: error: expected ‘)’ before ‘thread_index’
   34 |     history_entry(thread_id_t thread_index, debug_info_param info, void* ev, event_output_f output, event_dtor_f dtor)
      |                  ~           ^~~~~~~~~~~~~
      |                              )
/usr/include/relacy/history.hpp: In member function ‘void rl::user_event::output(std::ostream&) const’:
/usr/include/relacy/history.hpp:63:11: error: no match for ‘operator<<’ (operand types are ‘std::ostream’ {aka ‘std::basic_ostream<char>’} and ‘const char* const’)
   63 |         s << desc_;
      |         ~ ^~ ~~~~~
      |         |    |
      |         |    const char* const
      |         std::ostream {aka std::basic_ostream<char>}
/usr/include/relacy/history.hpp: At global scope:
/usr/include/relacy/history.hpp:67:8: error: ‘string’ does not name a type; did you mean ‘stdin’?
   67 | inline string strip_path(char const* filename)
      |        ^~~~~~
      |        stdin
/usr/include/relacy/history.hpp:76:53: error: ‘debug_info_param’ has not been declared
   76 | inline std::ostream& operator << (std::ostream& ss, debug_info_param info)
      |                                                     ^~~~~~~~~~~~~~~~
/usr/include/relacy/history.hpp: In function ‘std::ostream& rl::operator<<(std::ostream&, int)’:
/usr/include/relacy/history.hpp:87:16: error: request for member ‘func_’ in ‘info’, which is of non-class type ‘int’
   87 |     ss << info.func_ << ", " << strip_path(info.file_) << "(" << info.line_ << ")";
      |                ^~~~~
/usr/include/relacy/history.hpp:87:49: error: request for member ‘file_’ in ‘info’, which is of non-class type ‘int’
   87 |     ss << info.func_ << ", " << strip_path(info.file_) << "(" << info.line_ << ")";
      |                                                 ^~~~~
/usr/include/relacy/history.hpp:87:33: error: ‘strip_path’ was not declared in this scope
   87 |     ss << info.func_ << ", " << strip_path(info.file_) << "(" << info.line_ << ")";
      |                                 ^~~~~~~~~~
/usr/include/relacy/history.hpp:87:71: error: request for member ‘line_’ in ‘info’, which is of non-class type ‘int’
   87 |     ss << info.func_ << ", " << strip_path(info.file_) << "(" << info.line_ << ")";
      |                                                                       ^~~~~
/usr/include/relacy/history.hpp: At global scope:
/usr/include/relacy/history.hpp:94:27: error: expected template-name before ‘<’ token
   94 | class history_mgr : nocopy<>
      |                           ^
/usr/include/relacy/history.hpp:94:27: error: expected ‘{’ before ‘<’ token
/usr/include/relacy/history.hpp:94:27: error: expected unqualified-id before ‘<’ token
In file included from /usr/include/relacy/context_base.hpp:18:
/usr/include/relacy/memory.hpp:23:26: error: expected template-name before ‘<’ token
   23 | class memory_mgr : nocopy<>
      |                          ^
/usr/include/relacy/memory.hpp:23:26: error: expected ‘{’ before ‘<’ token
/usr/include/relacy/memory.hpp:23:26: error: expected unqualified-id before ‘<’ token
/usr/include/relacy/memory.hpp: In member function ‘void rl::memory_alloc_event::output(std::ostream&) const’:
/usr/include/relacy/memory.hpp:220:49: error: ‘hex’ is not a member of ‘std’
  220 |         s << "memory allocation: addr=" << std::hex << (void*)((char*)addr_ + (is_array_ ? alignment : 0)) << std::dec
      |                                                 ^~~
/usr/include/relacy/memory.hpp:220:92: error: ‘alignment’ was not declared in this scope
  220 |         s << "memory allocation: addr=" << std::hex << (void*)((char*)addr_ + (is_array_ ? alignment : 0)) << std::dec
      |                                                                                            ^~~~~~~~~
/usr/include/relacy/memory.hpp:220:116: error: ‘dec’ is not a member of ‘std’
  220 |         s << "memory allocation: addr=" << std::hex << (void*)((char*)addr_ + (is_array_ ? alignment : 0)) << std::dec
      |                                                                                                                    ^~~
/usr/include/relacy/memory.hpp: In member function ‘void rl::memory_free_event::output(std::ostream&) const’:
/usr/include/relacy/memory.hpp:233:51: error: ‘hex’ is not a member of ‘std’
  233 |         s << "memory deallocation: addr=" << std::hex << (void*)((char*)addr_ + (is_array_ ? alignment : 0)) << std::dec;
      |                                                   ^~~
/usr/include/relacy/memory.hpp:233:94: error: ‘alignment’ was not declared in this scope
  233 |         s << "memory deallocation: addr=" << std::hex << (void*)((char*)addr_ + (is_array_ ? alignment : 0)) << std::dec;
      |                                                                                              ^~~~~~~~~
/usr/include/relacy/memory.hpp:233:118: error: ‘dec’ is not a member of ‘std’
  233 |         s << "memory deallocation: addr=" << std::hex << (void*)((char*)addr_ + (is_array_ ? alignment : 0)) << std::dec;
      |                                                                                                                      ^~~
In file included from /usr/include/relacy/context_base.hpp:20:
/usr/include/relacy/slab_allocator.hpp: At global scope:
/usr/include/relacy/slab_allocator.hpp:24:30: error: expected template-name before ‘<’ token
   24 | class slab_allocator : nocopy<>
      |                              ^
/usr/include/relacy/slab_allocator.hpp:24:30: error: expected ‘{’ before ‘<’ token
In file included from /usr/include/relacy/context_base.hpp:22:
/usr/include/relacy/random.hpp:31:15: error: ‘iteration_t’ has not been declared
   31 |     void seed(iteration_t s)
      |               ^~~~~~~~~~~
/usr/include/relacy/random.hpp:44:5: error: ‘RL_INLINE’ does not name a type
   44 |     RL_INLINE
      |     ^~~~~~~~~
/usr/include/relacy/random.hpp:44:5: note: the macro ‘RL_INLINE’ had not yet been defined
In file included from /usr/include/relacy/base.hpp:17:
/usr/include/relacy/platform.hpp:241: note: it was later defined here
  241 | #   define RL_INLINE inline
      | 
In file included from /usr/include/relacy/context_base.hpp:23:
/usr/include/relacy/foreach.hpp:22:22: error: ‘thread_id_t’ has not been declared
   22 | template<typename T, thread_id_t i, thread_id_t index>
      |                      ^~~~~~~~~~~
/usr/include/relacy/foreach.hpp:22:37: error: ‘thread_id_t’ has not been declared
   22 | template<typename T, thread_id_t i, thread_id_t index>
      |                                     ^~~~~~~~~~~
/usr/include/relacy/foreach.hpp:26:5: error: ‘RL_INLINE’ does not name a type
   26 |     RL_INLINE static void exec(
      |     ^~~~~~~~~
/usr/include/relacy/foreach.hpp:26:5: note: the macro ‘RL_INLINE’ had not yet been defined
/usr/include/relacy/platform.hpp:241: note: it was later defined here
  241 | #   define RL_INLINE inline
      | 
/usr/include/relacy/foreach.hpp:34:5: error: ‘RL_INLINE’ does not name a type
   34 |     RL_INLINE static void exec(
      |     ^~~~~~~~~
/usr/include/relacy/foreach.hpp:34:5: note: the macro ‘RL_INLINE’ had not yet been defined
/usr/include/relacy/platform.hpp:241: note: it was later defined here
  241 | #   define RL_INLINE inline
      | 
/usr/include/relacy/foreach.hpp:42:5: error: ‘RL_INLINE’ does not name a type
   42 |     RL_INLINE static void exec(
      |     ^~~~~~~~~
/usr/include/relacy/foreach.hpp:42:5: note: the macro ‘RL_INLINE’ had not yet been defined
/usr/include/relacy/platform.hpp:241: note: it was later defined here
  241 | #   define RL_INLINE inline
      | 
/usr/include/relacy/foreach.hpp:51:22: error: ‘thread_id_t’ has not been declared
   51 | template<typename T, thread_id_t i>
      |                      ^~~~~~~~~~~
/usr/include/relacy/foreach.hpp:52:31: error: ‘i’ was not declared in this scope
   52 | struct foreach_thread_impl<T, i, 0>
      |                               ^
/usr/include/relacy/foreach.hpp:52:35: error: template argument 2 is invalid
   52 | struct foreach_thread_impl<T, i, 0>
      |                                   ^
/usr/include/relacy/foreach.hpp:74:10: error: ‘thread_id_t’ has not been declared
   74 | template<thread_id_t count, typename T, typename F>
      |          ^~~~~~~~~~~
/usr/include/relacy/foreach.hpp:75:1: error: ‘RL_INLINE’ does not name a type
   75 | RL_INLINE void foreach(
      | ^~~~~~~~~
/usr/include/relacy/foreach.hpp:75:1: note: the macro ‘RL_INLINE’ had not yet been defined
/usr/include/relacy/platform.hpp:241: note: it was later defined here
  241 | #   define RL_INLINE inline
      | 
/usr/include/relacy/foreach.hpp:82:10: error: ‘thread_id_t’ has not been declared
   82 | template<thread_id_t count, typename T>
      |          ^~~~~~~~~~~
/usr/include/relacy/foreach.hpp:83:1: error: ‘RL_INLINE’ does not name a type
   83 | RL_INLINE void foreach(
      | ^~~~~~~~~
/usr/include/relacy/foreach.hpp:83:1: note: the macro ‘RL_INLINE’ had not yet been defined
/usr/include/relacy/platform.hpp:241: note: it was later defined here
  241 | #   define RL_INLINE inline
      | 
/usr/include/relacy/foreach.hpp:90:10: error: ‘thread_id_t’ has not been declared
   90 | template<thread_id_t count, typename T>
      |          ^~~~~~~~~~~
/usr/include/relacy/foreach.hpp:91:1: error: ‘RL_INLINE’ does not name a type
   91 | RL_INLINE void foreach(
      | ^~~~~~~~~
/usr/include/relacy/foreach.hpp:91:1: note: the macro ‘RL_INLINE’ had not yet been defined
/usr/include/relacy/platform.hpp:241: note: it was later defined here
  241 | #   define RL_INLINE inline
      | 
/usr/include/relacy/foreach.hpp:98:1: error: ‘RL_INLINE’ does not name a type
   98 | RL_INLINE void assign_zero(timestamp_t& elem)
      | ^~~~~~~~~
/usr/include/relacy/foreach.hpp:98:1: note: the macro ‘RL_INLINE’ had not yet been defined
/usr/include/relacy/platform.hpp:241: note: it was later defined here
  241 | #   define RL_INLINE inline
      | 
/usr/include/relacy/foreach.hpp:103:1: error: ‘RL_INLINE’ does not name a type
  103 | RL_INLINE void assign_zero_u(unsigned& elem)
      | ^~~~~~~~~
/usr/include/relacy/foreach.hpp:103:1: note: the macro ‘RL_INLINE’ had not yet been defined
/usr/include/relacy/platform.hpp:241: note: it was later defined here
  241 | #   define RL_INLINE inline
      | 
/usr/include/relacy/foreach.hpp:108:10: error: ‘timestamp_t’ has not been declared
  108 | template<timestamp_t value>
      |          ^~~~~~~~~~~
/usr/include/relacy/foreach.hpp:109:1: error: ‘RL_INLINE’ does not name a type
  109 | RL_INLINE void assign(timestamp_t& elem)
      | ^~~~~~~~~
/usr/include/relacy/foreach.hpp:109:1: note: the macro ‘RL_INLINE’ had not yet been defined
/usr/include/relacy/platform.hpp:241: note: it was later defined here
  241 | #   define RL_INLINE inline
      | 
/usr/include/relacy/foreach.hpp:114:1: error: ‘RL_INLINE’ does not name a type
  114 | RL_INLINE void assign(timestamp_t& elem1, timestamp_t& elem2)
      | ^~~~~~~~~
/usr/include/relacy/foreach.hpp:114:1: note: the macro ‘RL_INLINE’ had not yet been defined
/usr/include/relacy/platform.hpp:241: note: it was later defined here
  241 | #   define RL_INLINE inline
      | 
/usr/include/relacy/foreach.hpp:119:1: error: ‘RL_INLINE’ does not name a type
  119 | RL_INLINE void assign_max(timestamp_t& elem1, timestamp_t& elem2)
      | ^~~~~~~~~
/usr/include/relacy/foreach.hpp:119:1: note: the macro ‘RL_INLINE’ had not yet been defined
/usr/include/relacy/platform.hpp:241: note: it was later defined here
  241 | #   define RL_INLINE inline
      | 
/usr/include/relacy/foreach.hpp:125:1: error: ‘RL_INLINE’ does not name a type
  125 | RL_INLINE void plus_one(timestamp_t& elem)
      | ^~~~~~~~~
/usr/include/relacy/foreach.hpp:125:1: note: the macro ‘RL_INLINE’ had not yet been defined
/usr/include/relacy/platform.hpp:241: note: it was later defined here
  241 | #   define RL_INLINE inline
      | 
In file included from /usr/include/relacy/context_base.hpp:24:
/usr/include/relacy/thread_base.hpp:30:10: error: ‘thread_id_t’ has not been declared
   30 | template<thread_id_t thread_count> struct atomic_data_impl;
      |          ^~~~~~~~~~~
/usr/include/relacy/thread_base.hpp:31:10: error: ‘thread_id_t’ has not been declared
   31 | template<thread_id_t thread_count> struct var_data_impl;
      |          ^~~~~~~~~~~
/usr/include/relacy/thread_base.hpp:40:59: error: expected ‘,’ or ‘...’ before ‘data’
   40 |     virtual unsigned atomic_init(atomic_data* RL_RESTRICT data) = 0;
      |                                                           ^~~~
/usr/include/relacy/thread_base.hpp:42:67: error: expected ‘,’ or ‘...’ before ‘data’
   42 |     virtual unsigned atomic_load_relaxed(atomic_data* RL_RESTRICT data) = 0;
      |                                                                   ^~~~
/usr/include/relacy/thread_base.hpp:43:67: error: expected ‘,’ or ‘...’ before ‘data’
   43 |     virtual unsigned atomic_load_acquire(atomic_data* RL_RESTRICT data) = 0;
      |                                                                   ^~~~
/usr/include/relacy/thread_base.hpp:44:67: error: expected ‘,’ or ‘...’ before ‘data’
   44 |     virtual unsigned atomic_load_seq_cst(atomic_data* RL_RESTRICT data) = 0;
      |                                                                   ^~~~
/usr/include/relacy/thread_base.hpp:45:71: error: expected ‘,’ or ‘...’ before ‘data’
   45 |     virtual unsigned atomic_load_relaxed_rmw(atomic_data* RL_RESTRICT data) = 0;
      |                                                                       ^~~~
/usr/include/relacy/thread_base.hpp:46:71: error: expected ‘,’ or ‘...’ before ‘data’
   46 |     virtual unsigned atomic_load_acquire_rmw(atomic_data* RL_RESTRICT data) = 0;
      |                                                                       ^~~~
/usr/include/relacy/thread_base.hpp:47:71: error: expected ‘,’ or ‘...’ before ‘data’
   47 |     virtual unsigned atomic_load_seq_cst_rmw(atomic_data* RL_RESTRICT data) = 0;
      |                                                                       ^~~~
/usr/include/relacy/thread_base.hpp:49:68: error: expected ‘,’ or ‘...’ before ‘data’
   49 |     virtual unsigned atomic_store_relaxed(atomic_data* RL_RESTRICT data) = 0;
      |                                                                    ^~~~
/usr/include/relacy/thread_base.hpp:50:68: error: expected ‘,’ or ‘...’ before ‘data’
   50 |     virtual unsigned atomic_store_release(atomic_data* RL_RESTRICT data) = 0;
      |                                                                    ^~~~
/usr/include/relacy/thread_base.hpp:51:68: error: expected ‘,’ or ‘...’ before ‘data’
   51 |     virtual unsigned atomic_store_seq_cst(atomic_data* RL_RESTRICT data) = 0;
      |                                                                    ^~~~
/usr/include/relacy/thread_base.hpp:53:66: error: expected ‘,’ or ‘...’ before ‘data’
   53 |     virtual unsigned atomic_rmw_relaxed(atomic_data* RL_RESTRICT data, bool& aba) = 0;
      |                                                                  ^~~~
/usr/include/relacy/thread_base.hpp:54:66: error: expected ‘,’ or ‘...’ before ‘data’
   54 |     virtual unsigned atomic_rmw_acquire(atomic_data* RL_RESTRICT data, bool& aba) = 0;
      |                                                                  ^~~~
/usr/include/relacy/thread_base.hpp:55:66: error: expected ‘,’ or ‘...’ before ‘data’
   55 |     virtual unsigned atomic_rmw_release(atomic_data* RL_RESTRICT data, bool& aba) = 0;
      |                                                                  ^~~~
/usr/include/relacy/thread_base.hpp:56:66: error: expected ‘,’ or ‘...’ before ‘data’
   56 |     virtual unsigned atomic_rmw_acq_rel(atomic_data* RL_RESTRICT data, bool& aba) = 0;
      |                                                                  ^~~~
/usr/include/relacy/thread_base.hpp:57:66: error: expected ‘,’ or ‘...’ before ‘data’
   57 |     virtual unsigned atomic_rmw_seq_cst(atomic_data* RL_RESTRICT data, bool& aba) = 0;
      |                                                                  ^~~~
/usr/include/relacy/thread_base.hpp:59:13: error: ‘unpark_reason’ does not name a type
   59 |     virtual unpark_reason atomic_wait(atomic_data* RL_RESTRICT data, bool is_timed, bool allow_spurious_wakeup, debug_info_param info) = 0;
      |             ^~~~~~~~~~~~~
/usr/include/relacy/thread_base.hpp:60:13: error: ‘thread_id_t’ does not name a type; did you mean ‘pthread_t’?
   60 |     virtual thread_id_t atomic_wake(atomic_data* RL_RESTRICT data, thread_id_t count, debug_info_param info) = 0;
      |             ^~~~~~~~~~~
      |             pthread_t
/usr/include/relacy/thread_base.hpp:64:5: error: ‘fiber_t’ does not name a type; did you mean ‘timer_t’?
   64 |     fiber_t fiber_;
      |     ^~~~~~~
      |     timer_t
/usr/include/relacy/thread_base.hpp:65:5: error: ‘thread_id_t’ does not name a type; did you mean ‘pthread_t’?
   65 |     thread_id_t const index_;
      |     ^~~~~~~~~~~
      |     pthread_t
/usr/include/relacy/thread_base.hpp:66:5: error: ‘context’ does not name a type; did you mean ‘const’?
   66 |     context* ctx_;
      |     ^~~~~~~
      |     const
/usr/include/relacy/thread_base.hpp:67:5: error: ‘timestamp_t’ does not name a type
   67 |     timestamp_t* const acq_rel_order_;
      |     ^~~~~~~~~~~
/usr/include/relacy/thread_base.hpp:68:5: error: ‘timestamp_t’ does not name a type
   68 |     timestamp_t last_yield_;
      |     ^~~~~~~~~~~
/usr/include/relacy/thread_base.hpp:69:5: error: ‘timestamp_t’ does not name a type
   69 |     timestamp_t& own_acq_rel_order_;
      |     ^~~~~~~~~~~
/usr/include/relacy/thread_base.hpp:70:5: error: ‘unpark_reason’ does not name a type
   70 |     unpark_reason unpark_reason_;
      |     ^~~~~~~~~~~~~
/usr/include/relacy/thread_base.hpp:71:5: error: ‘thread_id_t’ does not name a type; did you mean ‘pthread_t’?
   71 |     thread_id_t temp_switch_from_;
      |     ^~~~~~~~~~~
      |     pthread_t
/usr/include/relacy/thread_base.hpp:78:33: error: expected ‘)’ before ‘index’
   78 |     thread_info_base(thread_id_t index, timestamp_t* acq_rel_order)
      |                     ~           ^~~~~~
      |                                 )
In file included from /usr/include/relacy/context_base.hpp:25:
/usr/include/relacy/context_addr_hash.hpp:32:27: error: ‘thread_id_t’ has not been declared
   32 | template<typename base_t, thread_id_t thread_count>
      |                           ^~~~~~~~~~~
/usr/include/relacy/context_addr_hash.hpp:36:39: error: expected ‘)’ before ‘thread_count_param’
   36 |     context_addr_hash_impl(thread_id_t thread_count_param, test_params& params)
      |                           ~           ^~~~~~~~~~~~~~~~~~~
      |                                       )
/usr/include/relacy/context_addr_hash.hpp:54:13: error: ‘map’ does not name a type
   54 |     typedef map<void const*, size_t>::type  hash_map_t;
      |             ^~~
/usr/include/relacy/context_addr_hash.hpp:55:5: error: ‘hash_map_t’ does not name a type
   55 |     hash_map_t                              hash_map_;
      |     ^~~~~~~~~~
/usr/include/relacy/context_base.hpp:72:5: error: ‘string’ does not name a type; did you mean ‘stdin’?
   72 |     string msg_;
      |     ^~~~~~
      |     stdin
/usr/include/relacy/context_base.hpp: In member function ‘void rl::user_msg_event::output(std::ostream&) const’:
/usr/include/relacy/context_base.hpp:76:14: error: ‘msg_’ was not declared in this scope
   76 |         s << msg_;
      |              ^~~~
/usr/include/relacy/context_base.hpp: At global scope:
/usr/include/relacy/context_base.hpp:96:13: error: expected template-name before ‘<’ token
   96 |     , nocopy<>
      |             ^
/usr/include/relacy/context_base.hpp:96:13: error: expected ‘{’ before ‘<’ token
/usr/include/relacy/context_base.hpp:96:13: error: expected unqualified-id before ‘<’ token
/usr/include/relacy/context_base.hpp: In function ‘rl::context& rl::ctx()’:
/usr/include/relacy/context_base.hpp:259:21: error: incomplete type ‘rl::context’ used in nested name specifier
  259 |     return context::instance();
      |                     ^~~~~~~~
/usr/include/relacy/context_base.hpp: In function ‘bool rl::is_ctx()’:
/usr/include/relacy/context_base.hpp:264:21: error: incomplete type ‘rl::context’ used in nested name specifier
  264 |     return context::is_instance();
      |                     ^~~~~~~~~~~
/usr/include/relacy/context_base.hpp: In function ‘int rl::get_errno()’:
/usr/include/relacy/context_base.hpp:270:15: error: invalid use of incomplete type ‘class rl::context’
  270 |     return ctx().get_errno();
      |            ~~~^~
/usr/include/relacy/context_base.hpp:93:7: note: forward declaration of ‘class rl::context’
   93 | class context
      |       ^~~~~~~
/usr/include/relacy/context_base.hpp: In function ‘void rl::set_errno(int)’:
/usr/include/relacy/context_base.hpp:275:15: error: invalid use of incomplete type ‘class rl::context’
  275 |     return ctx().set_errno(value);
      |            ~~~^~
/usr/include/relacy/context_base.hpp:93:7: note: forward declaration of ‘class rl::context’
   93 | class context
      |       ^~~~~~~
/usr/include/relacy/context_base.hpp: At global scope:
/usr/include/relacy/context_base.hpp:278:35: error: expected template-name before ‘<’ token
  278 | class preemption_disabler : nocopy<>
      |                                   ^
/usr/include/relacy/context_base.hpp:278:35: error: expected ‘{’ before ‘<’ token
/usr/include/relacy/context_base.hpp:278:35: error: expected unqualified-id before ‘<’ token
In file included from /usr/include/relacy/dyn_thread_ctx.hpp:18,
                 from /usr/include/relacy/thread.hpp:18,
                 from /usr/include/relacy/context.hpp:19:
/usr/include/relacy/waitset.hpp:25:10: error: ‘thread_id_t’ has not been declared
   25 | template<thread_id_t thread_count>
      |          ^~~~~~~~~~~
/usr/include/relacy/waitset.hpp:34:5: error: ‘unpark_reason’ does not name a type
   34 |     unpark_reason park_current(context& c,
      |     ^~~~~~~~~~~~~
/usr/include/relacy/waitset.hpp:60:12: error: ‘unpark_reason’ does not name a type
   60 |     static unpark_reason park_current(context& c,
      |            ^~~~~~~~~~~~~
/usr/include/relacy/waitset.hpp:92:33: error: ‘debug_info_param’ has not been declared
   92 |     bool unpark_one(context& c, debug_info_param info)
      |                                 ^~~~~~~~~~~~~~~~
/usr/include/relacy/waitset.hpp:108:5: error: ‘thread_id_t’ does not name a type; did you mean ‘pthread_t’?
  108 |     thread_id_t unpark_all(context& c, debug_info_param info)
      |     ^~~~~~~~~~~
      |     pthread_t
/usr/include/relacy/waitset.hpp:122:5: error: ‘thread_id_t’ does not name a type; did you mean ‘pthread_t’?
  122 |     thread_id_t size() const
      |     ^~~~~~~~~~~
      |     pthread_t
/usr/include/relacy/waitset.hpp:138:9: error: ‘win_waitable_object’ does not name a type
  138 |         win_waitable_object**   wo_;        // 0 - wfso, !0 - wfmo
      |         ^~~~~~~~~~~~~~~~~~~
/usr/include/relacy/waitset.hpp:143:39: error: ‘thread_count’ was not declared in this scope; did you mean ‘sched_count’?
  143 |     thread_desc                 set_ [thread_count];
      |                                       ^~~~~~~~~~~~
      |                                       sched_count
/usr/include/relacy/waitset.hpp:144:5: error: ‘thread_id_t’ does not name a type; did you mean ‘pthread_t’?
  144 |     thread_id_t                 size_;
      |     ^~~~~~~~~~~
      |     pthread_t
/usr/include/relacy/waitset.hpp:146:33: error: ‘thread_id_t’ has not been declared
  146 |     bool try_remove(context& c, thread_id_t const idx, debug_info_param info)
      |                                 ^~~~~~~~~~~
/usr/include/relacy/waitset.hpp:146:56: error: ‘debug_info_param’ has not been declared
  146 |     bool try_remove(context& c, thread_id_t const idx, debug_info_param info)
      |                                                        ^~~~~~~~~~~~~~~~
In file included from /usr/include/relacy/dyn_thread_ctx.hpp:19:
/usr/include/relacy/sync_var.hpp:24:10: error: ‘thread_id_t’ has not been declared
   24 | template<thread_id_t thread_count>
      |          ^~~~~~~~~~~
/usr/include/relacy/sync_var.hpp:25:24: error: expected template-name before ‘<’ token
   25 | class sync_var : nocopy<>
      |                        ^
/usr/include/relacy/sync_var.hpp:25:24: error: expected ‘{’ before ‘<’ token
In file included from /usr/include/relacy/stdlib/semaphore.hpp:20,
                 from /usr/include/relacy/dyn_thread_ctx.hpp:20:
/usr/include/relacy/signature.hpp:45:16: error: ‘debug_info_param’ has not been declared
   45 |     void check(debug_info_param info) const
      |                ^~~~~~~~~~~~~~~~
/usr/include/relacy/signature.hpp:73:5: error: ‘RL_NOINLINE’ does not name a type
   73 |     RL_NOINLINE void fail(debug_info_param info) const
      |     ^~~~~~~~~~~
/usr/include/relacy/signature.hpp:73:5: note: the macro ‘RL_NOINLINE’ had not yet been defined
/usr/include/relacy/platform.hpp:242: note: it was later defined here
  242 | #   define RL_NOINLINE
      | 
/usr/include/relacy/signature.hpp: In destructor ‘rl::signature<magic>::~signature()’:
/usr/include/relacy/signature.hpp:41:15: error: ‘RL_INFO’ was not declared in this scope
   41 |         check(RL_INFO);
      |               ^~~~~~~
/usr/include/relacy/signature.hpp:41:15: note: the macro ‘RL_INFO’ had not yet been defined
/usr/include/relacy/base.hpp:117: note: it was later defined here
  117 | #define RL_INFO ::rl::debug_info(__FUNCTION__, __FILE__, __LINE__)
      | 
/usr/include/relacy/signature.hpp: In member function ‘void rl::signature<magic>::fault_event::output(std::ostream&) const’:
/usr/include/relacy/signature.hpp:68:15: error: no match for ‘operator<<’ (operand types are ‘std::ostream’ {aka ‘std::basic_ostream<char>’} and ‘const char [2]’)
   68 |             s << "<" << std::hex << addr_ << std::dec << ">"
      |             ~ ^~ ~~~
      |             |    |
      |             |    const char [2]
      |             std::ostream {aka std::basic_ostream<char>}
/usr/include/relacy/history.hpp:76:22: note: candidate: ‘std::ostream& rl::operator<<(std::ostream&, int)’ (near match)
   76 | inline std::ostream& operator << (std::ostream& ss, debug_info_param info)
      |                      ^~~~~~~~
/usr/include/relacy/history.hpp:76:22: note:   conversion of argument 2 would be ill-formed:
/usr/include/relacy/signature.hpp:68:30: error: ‘hex’ is not a member of ‘std’
   68 |             s << "<" << std::hex << addr_ << std::dec << ">"
      |                              ^~~
/usr/include/relacy/signature.hpp:68:51: error: ‘dec’ is not a member of ‘std’
   68 |             s << "<" << std::hex << addr_ << std::dec << ">"
      |                                                   ^~~
/usr/include/relacy/stdlib/semaphore.hpp: At global scope:
/usr/include/relacy/stdlib/semaphore.hpp:36:25: error: ‘debug_info_param’ has not been declared
   36 |     virtual void deinit(debug_info_param info) = 0;
      |                         ^~~~~~~~~~~~~~~~
/usr/include/relacy/stdlib/semaphore.hpp:42:67: error: ‘debug_info_param’ has not been declared
   42 |     virtual sema_wakeup_reason wait(bool try_wait, bool is_timed, debug_info_param info) = 0;
      |                                                                   ^~~~~~~~~~~~~~~~
/usr/include/relacy/stdlib/semaphore.hpp:43:25: error: ‘debug_info_param’ has not been declared
   43 |     virtual bool signal(debug_info_param info) = 0;
      |                         ^~~~~~~~~~~~~~~~
/usr/include/relacy/stdlib/semaphore.hpp:45:30: error: ‘debug_info_param’ has not been declared
   45 |     virtual bool is_signaled(debug_info_param info) = 0;
      |                              ^~~~~~~~~~~~~~~~
/usr/include/relacy/stdlib/semaphore.hpp:46:33: error: ‘debug_info_param’ has not been declared
   46 |     virtual void memory_acquire(debug_info_param info) = 0;
      |                                 ^~~~~~~~~~~~~~~~
/usr/include/relacy/stdlib/semaphore.hpp:47:32: error: ‘debug_info_param’ has not been declared
   47 |     virtual void* prepare_wait(debug_info_param info) = 0;
      |                                ^~~~~~~~~~~~~~~~
/usr/include/relacy/stdlib/semaphore.hpp:55:67: error: ‘debug_info_param’ has not been declared
   55 |     virtual sema_wakeup_reason wait(bool try_wait, bool is_timed, debug_info_param info) = 0;
      |                                                                   ^~~~~~~~~~~~~~~~
/usr/include/relacy/stdlib/semaphore.hpp:56:61: error: ‘debug_info_param’ has not been declared
   56 |     virtual bool post(unsigned count, unsigned& prev_count, debug_info_param info) = 0;
      |                                                             ^~~~~~~~~~~~~~~~
/usr/include/relacy/stdlib/semaphore.hpp:57:27: error: ‘debug_info_param’ has not been declared
   57 |     virtual int get_value(debug_info_param info) = 0;
      |                           ^~~~~~~~~~~~~~~~
/usr/include/relacy/stdlib/semaphore.hpp:58:30: error: ‘debug_info_param’ has not been declared
   58 |     virtual bool is_signaled(debug_info_param info) = 0;
      |                              ^~~~~~~~~~~~~~~~
/usr/include/relacy/stdlib/semaphore.hpp:59:33: error: ‘debug_info_param’ has not been declared
   59 |     virtual void memory_acquire(debug_info_param info) = 0;
      |                                 ^~~~~~~~~~~~~~~~
/usr/include/relacy/stdlib/semaphore.hpp:60:32: error: ‘debug_info_param’ has not been declared
   60 |     virtual void* prepare_wait(debug_info_param info) = 0;
      |                                ^~~~~~~~~~~~~~~~
/usr/include/relacy/stdlib/semaphore.hpp:67:10: error: ‘thread_id_t’ has not been declared
   67 | template<thread_id_t thread_count>
      |          ^~~~~~~~~~~
/usr/include/relacy/stdlib/semaphore.hpp:121:9: error: ‘thread_id_t’ does not name a type; did you mean ‘pthread_t’?
  121 |         thread_id_t             unblocked_;
      |         ^~~~~~~~~~~
      |         pthread_t
/usr/include/relacy/stdlib/semaphore.hpp:151:37: error: ‘debug_info_param’ has not been declared
  151 |                                     debug_info_param info)
      |                                     ^~~~~~~~~~~~~~~~
/usr/include/relacy/stdlib/semaphore.hpp:206:61: error: ‘debug_info_param’ has not been declared
  206 |     virtual bool post(unsigned count, unsigned& prev_count, debug_info_param info)
      |                                                             ^~~~~~~~~~~~~~~~
/usr/include/relacy/stdlib/semaphore.hpp:235:27: error: ‘debug_info_param’ has not been declared
  235 |     virtual int get_value(debug_info_param info)
      |                           ^~~~~~~~~~~~~~~~
/usr/include/relacy/stdlib/semaphore.hpp:254:13: error: ‘thread_count’ was not declared in this scope; did you mean ‘sched_count’?
  254 |     waitset<thread_count> ws_;
      |             ^~~~~~~~~~~~
      |             sched_count
/usr/include/relacy/stdlib/semaphore.hpp:254:25: error: template argument 1 is invalid
  254 |     waitset<thread_count> ws_;
      |                         ^
/usr/include/relacy/stdlib/semaphore.hpp:255:14: error: ‘thread_count’ was not declared in this scope; did you mean ‘sched_count’?
  255 |     sync_var<thread_count> sync_;
      |              ^~~~~~~~~~~~
      |              sched_count
/usr/include/relacy/stdlib/semaphore.hpp:255:26: error: template argument 1 is invalid
  255 |     sync_var<thread_count> sync_;
      |                          ^
/usr/include/relacy/stdlib/semaphore.hpp:257:30: error: ‘debug_info_param’ has not been declared
  257 |     virtual bool is_signaled(debug_info_param info)
      |                              ^~~~~~~~~~~~~~~~
/usr/include/relacy/stdlib/semaphore.hpp:263:33: error: ‘debug_info_param’ has not been declared
  263 |     virtual void memory_acquire(debug_info_param info)
      |                                 ^~~~~~~~~~~~~~~~
/usr/include/relacy/stdlib/semaphore.hpp:269:32: error: ‘debug_info_param’ has not been declared
  269 |     virtual void* prepare_wait(debug_info_param info)
      |                                ^~~~~~~~~~~~~~~~
/usr/include/relacy/stdlib/semaphore.hpp:299:82: error: ‘debug_info_param’ has not been declared
  299 |     void init(bool spurious_wakeups, unsigned initial_count, unsigned max_count, debug_info_param info)
      |                                                                                  ^~~~~~~~~~~~~~~~
/usr/include/relacy/stdlib/semaphore.hpp:307:17: error: ‘debug_info_param’ has not been declared
  307 |     void deinit(debug_info_param info)
      |                 ^~~~~~~~~~~~~~~~
/usr/include/relacy/stdlib/semaphore.hpp:315:67: error: ‘debug_info_param’ has not been declared
  315 |     virtual sema_wakeup_reason wait(bool try_wait, bool is_timed, debug_info_param info)
      |                                                                   ^~~~~~~~~~~~~~~~
/usr/include/relacy/stdlib/semaphore.hpp:321:25: error: ‘debug_info_param’ has not been declared
  321 |     virtual bool signal(debug_info_param info)
      |                         ^~~~~~~~~~~~~~~~
/usr/include/relacy/stdlib/semaphore.hpp:327:53: error: ‘debug_info_param’ has not been declared
  327 |     bool post(unsigned count, unsigned& prev_count, debug_info_param info)
      |                                                     ^~~~~~~~~~~~~~~~
/usr/include/relacy/stdlib/semaphore.hpp:333:19: error: ‘debug_info_param’ has not been declared
  333 |     int get_value(debug_info_param info)
      |                   ^~~~~~~~~~~~~~~~
/usr/include/relacy/stdlib/semaphore.hpp:343:22: error: ‘debug_info_param’ has not been declared
  343 |     sema_data* check(debug_info_param info)
      |                      ^~~~~~~~~~~~~~~~
/usr/include/relacy/stdlib/semaphore.hpp:350:30: error: ‘debug_info_param’ has not been declared
  350 |     virtual bool is_signaled(debug_info_param info)
      |                              ^~~~~~~~~~~~~~~~
/usr/include/relacy/stdlib/semaphore.hpp:355:33: error: ‘debug_info_param’ has not been declared
  355 |     virtual void memory_acquire(debug_info_param info)
      |                                 ^~~~~~~~~~~~~~~~
/usr/include/relacy/stdlib/semaphore.hpp:360:32: error: ‘debug_info_param’ has not been declared
  360 |     virtual void* prepare_wait(debug_info_param info)
      |                                ^~~~~~~~~~~~~~~~
/usr/include/relacy/stdlib/semaphore.hpp:407:5: error: ‘debug_info_param’ has not been declared
  407 |     debug_info_param info)
      |     ^~~~~~~~~~~~~~~~
/usr/include/relacy/stdlib/semaphore.hpp: In function ‘rl::sema_wakeup_reason rl::wait_for_multiple_objects(size_t&, size_t, win_waitable_object**, bool, bool, bool, int)’:
/usr/include/relacy/stdlib/semaphore.hpp:410:5: error: invalid use of incomplete type ‘class rl::context’
  410 |     c.sched();
      |     ^
/usr/include/relacy/context_base.hpp:93:7: note: forward declaration of ‘class rl::context’
   93 | class context
      |       ^~~~~~~
/usr/include/relacy/stdlib/semaphore.hpp:412:5: error: ‘RL_VERIFY’ was not declared in this scope
  412 |     RL_VERIFY(count <= wfmo_max_objects);
      |     ^~~~~~~~~
/usr/include/relacy/stdlib/semaphore.hpp:412:5: note: the macro ‘RL_VERIFY’ had not yet been defined
/usr/include/relacy/base.hpp:141: note: it was later defined here
  141 | #   define RL_VERIFY(x) (void)0
      | 
/usr/include/relacy/stdlib/semaphore.hpp:430:42: error: variable ‘rl::preemption_disabler pd’ has initializer but incomplete type
  430 |                 preemption_disabler pd (c);
      |                                          ^
/usr/include/relacy/stdlib/semaphore.hpp:453:17: error: ‘unpark_reason’ was not declared in this scope
  453 |                 unpark_reason reason = c.wfmo_park(ws, wo, (unsigned)count, !!wait_all, is_timed, info);
      |                 ^~~~~~~~~~~~~
/usr/include/relacy/stdlib/semaphore.hpp:454:27: error: ‘unpark_reason_spurious’ was not declared in this scope; did you mean ‘sema_wakeup_reason_spurious’?
  454 |                 RL_VERIFY(unpark_reason_spurious != reason);
      |                           ^~~~~~~~~~~~~~~~~~~~~~
      |                           sema_wakeup_reason_spurious
/usr/include/relacy/stdlib/semaphore.hpp:454:53: error: ‘reason’ was not declared in this scope
  454 |                 RL_VERIFY(unpark_reason_spurious != reason);
      |                                                     ^~~~~~
/usr/include/relacy/stdlib/semaphore.hpp:455:21: error: ‘unpark_reason_timeout’ was not declared in this scope; did you mean ‘sema_wakeup_reason_timeout’?
  455 |                 if (unpark_reason_timeout == reason)
      |                     ^~~~~~~~~~~~~~~~~~~~~
      |                     sema_wakeup_reason_timeout
/usr/include/relacy/stdlib/semaphore.hpp:462:26: error: ‘unpark_reason_normal’ was not declared in this scope
  462 |                 else if (unpark_reason_normal == reason)
      |                          ^~~~~~~~~~~~~~~~~~~~
/usr/include/relacy/stdlib/semaphore.hpp:465:50: error: variable ‘rl::preemption_disabler pd’ has initializer but incomplete type
  465 |                         preemption_disabler pd (c);
      |                                                  ^
/usr/include/relacy/stdlib/semaphore.hpp:474:21: error: invalid use of incomplete type ‘class rl::context’
  474 |                     c.switch_back(info);
      |                     ^
/usr/include/relacy/context_base.hpp:93:7: note: forward declaration of ‘class rl::context’
   93 | class context
      |       ^~~~~~~
/usr/include/relacy/stdlib/semaphore.hpp:494:42: error: variable ‘rl::preemption_disabler pd’ has initializer but incomplete type
  494 |                 preemption_disabler pd (c);
      |                                          ^
/usr/include/relacy/stdlib/semaphore.hpp:515:17: error: ‘unpark_reason’ was not declared in this scope
  515 |                 unpark_reason reason = c.wfmo_park(ws, wo, (unsigned)count, !!wait_all, is_timed, info);
      |                 ^~~~~~~~~~~~~
/usr/include/relacy/stdlib/semaphore.hpp:516:27: error: ‘unpark_reason_spurious’ was not declared in this scope; did you mean ‘sema_wakeup_reason_spurious’?
  516 |                 RL_VERIFY(unpark_reason_spurious != reason);
      |                           ^~~~~~~~~~~~~~~~~~~~~~
      |                           sema_wakeup_reason_spurious
/usr/include/relacy/stdlib/semaphore.hpp:516:53: error: ‘reason’ was not declared in this scope
  516 |                 RL_VERIFY(unpark_reason_spurious != reason);
      |                                                     ^~~~~~
/usr/include/relacy/stdlib/semaphore.hpp:517:21: error: ‘unpark_reason_timeout’ was not declared in this scope; did you mean ‘sema_wakeup_reason_timeout’?
  517 |                 if (unpark_reason_timeout == reason)
      |                     ^~~~~~~~~~~~~~~~~~~~~
      |                     sema_wakeup_reason_timeout
/usr/include/relacy/stdlib/semaphore.hpp:524:26: error: ‘unpark_reason_normal’ was not declared in this scope
  524 |                 else if (unpark_reason_normal == reason)
      |                          ^~~~~~~~~~~~~~~~~~~~
/usr/include/relacy/stdlib/semaphore.hpp:534:50: error: variable ‘rl::preemption_disabler pd’ has initializer but incomplete type
  534 |                         preemption_disabler pd (c);
      |                                                  ^
/usr/include/relacy/stdlib/semaphore.hpp:539:21: error: invalid use of incomplete type ‘class rl::context’
  539 |                     c.switch_back(info);
      |                     ^
/usr/include/relacy/context_base.hpp:93:7: note: forward declaration of ‘class rl::context’
   93 | class context
      |       ^~~~~~~
/usr/include/relacy/stdlib/semaphore.hpp:549:5: error: invalid use of incomplete type ‘class rl::context’
  549 |     RL_HIST(wfmo_event) {(unsigned)count, wait_all, try_wait, is_timed, result, signaled} RL_HIST_END();
      |     ^~~~~~~
/usr/include/relacy/context_base.hpp:93:7: note: forward declaration of ‘class rl::context’
   93 | class context
      |       ^~~~~~~
/usr/include/relacy/stdlib/semaphore.hpp:549:5: error: ‘debug_info’ is not a member of ‘rl’
  549 |     RL_HIST(wfmo_event) {(unsigned)count, wait_all, try_wait, is_timed, result, signaled} RL_HIST_END();
      |     ^~~~~~~
/usr/include/relacy/stdlib/semaphore.hpp:549:91: error: invalid use of incomplete type ‘class rl::context’
  549 |     RL_HIST(wfmo_event) {(unsigned)count, wait_all, try_wait, is_timed, result, signaled} RL_HIST_END();
      |                                                                                           ^~~~~~~~~~~
/usr/include/relacy/context_base.hpp:93:7: note: forward declaration of ‘class rl::context’
   93 | class context
      |       ^~~~~~~
/usr/include/relacy/stdlib/semaphore.hpp:549:91: error: ‘rl_info_c’ was not declared in this scope
  549 |     RL_HIST(wfmo_event) {(unsigned)count, wait_all, try_wait, is_timed, result, signaled} RL_HIST_END();
      |                                                                                           ^~~~~~~~~~~
/usr/include/relacy/dyn_thread_ctx.hpp: At global scope:
/usr/include/relacy/dyn_thread_ctx.hpp:27:10: error: ‘thread_id_t’ has not been declared
   27 | template<thread_id_t thread_count>
      |          ^~~~~~~~~~~
/usr/include/relacy/dyn_thread_ctx.hpp:65:13: error: ‘thread_count’ was not declared in this scope; did you mean ‘sched_count’?
   65 |     waitset<thread_count> ws_;
      |             ^~~~~~~~~~~~
      |             sched_count
/usr/include/relacy/dyn_thread_ctx.hpp:65:25: error: template argument 1 is invalid
   65 |     waitset<thread_count> ws_;
      |                         ^
/usr/include/relacy/dyn_thread_ctx.hpp:66:14: error: ‘thread_count’ was not declared in this scope; did you mean ‘sched_count’?
   66 |     sync_var<thread_count> sync_;
      |              ^~~~~~~~~~~~
      |              sched_count
/usr/include/relacy/dyn_thread_ctx.hpp:66:26: error: template argument 1 is invalid
   66 |     sync_var<thread_count> sync_;
      |                          ^
/usr/include/relacy/dyn_thread_ctx.hpp:68:25: error: ‘debug_info_param’ has not been declared
   68 |     virtual void deinit(debug_info_param info)
      |                         ^~~~~~~~~~~~~~~~
/usr/include/relacy/dyn_thread_ctx.hpp:73:67: error: ‘debug_info_param’ has not been declared
   73 |     virtual sema_wakeup_reason wait(bool try_wait, bool is_timed, debug_info_param info)
      |                                                                   ^~~~~~~~~~~~~~~~
/usr/include/relacy/dyn_thread_ctx.hpp:99:25: error: ‘debug_info_param’ has not been declared
   99 |     virtual bool signal(debug_info_param info)
      |                         ^~~~~~~~~~~~~~~~
/usr/include/relacy/dyn_thread_ctx.hpp:105:30: error: ‘debug_info_param’ has not been declared
  105 |     virtual bool is_signaled(debug_info_param info)
      |                              ^~~~~~~~~~~~~~~~
/usr/include/relacy/dyn_thread_ctx.hpp:111:33: error: ‘debug_info_param’ has not been declared
  111 |     virtual void memory_acquire(debug_info_param info)
      |                                 ^~~~~~~~~~~~~~~~
/usr/include/relacy/dyn_thread_ctx.hpp:117:32: error: ‘debug_info_param’ has not been declared
  117 |     virtual void* prepare_wait(debug_info_param info)
      |                                ^~~~~~~~~~~~~~~~
In file included from /usr/include/relacy/thread.hpp:20:
/usr/include/relacy/test_suite.hpp:26:5: error: ‘thread_id_t’ has not been declared
   26 |     thread_id_t static_thread_count_param,
      |     ^~~~~~~~~~~
/usr/include/relacy/test_suite.hpp:28:27: error: expected template-name before ‘<’ token
   28 | struct test_suite : nocopy<>
      |                           ^
/usr/include/relacy/test_suite.hpp:28:27: error: expected ‘{’ before ‘<’ token
In file included from /usr/include/relacy/thread.hpp:21:
/usr/include/relacy/memory_order.hpp: In function ‘const char* rl::format(memory_order)’:
/usr/include/relacy/memory_order.hpp:47:5: error: ‘RL_VERIFY’ was not declared in this scope
   47 |     RL_VERIFY(!"invalid value of memory order");
      |     ^~~~~~~~~
/usr/include/relacy/memory_order.hpp:47:5: note: the macro ‘RL_VERIFY’ had not yet been defined
/usr/include/relacy/base.hpp:141: note: it was later defined here
  141 | #   define RL_VERIFY(x) (void)0
      | 
/usr/include/relacy/memory_order.hpp:48:16: error: ‘logic_error’ is not a member of ‘std’
   48 |     throw std::logic_error("invalid value of memory order");
      |                ^~~~~~~~~~~
/usr/include/relacy/thread.hpp: At global scope:
/usr/include/relacy/thread.hpp:32:10: error: ‘thread_id_t’ has not been declared
   32 | template<thread_id_t thread_count> struct atomic_data_impl;
      |          ^~~~~~~~~~~
/usr/include/relacy/thread.hpp:33:10: error: ‘thread_id_t’ has not been declared
   33 | template<thread_id_t thread_count> struct var_data_impl;
      |          ^~~~~~~~~~~
/usr/include/relacy/thread.hpp:36:10: error: ‘thread_id_t’ has not been declared
   36 | template<thread_id_t thread_count>
      |          ^~~~~~~~~~~
/usr/include/relacy/thread.hpp:39:28: error: expected ‘)’ before ‘index’
   39 |     thread_info(thread_id_t index = 0)
      |                ~           ^~~~~~
      |                            )
/usr/include/relacy/thread.hpp:59:24: error: ‘thread_count’ was not declared in this scope; did you mean ‘sched_count’?
   59 |     thread_sync_object<thread_count> sync_object_;
      |                        ^~~~~~~~~~~~
      |                        sched_count
/usr/include/relacy/thread.hpp:59:36: error: template argument 1 is invalid
   59 |     thread_sync_object<thread_count> sync_object_;
      |                                    ^
/usr/include/relacy/thread.hpp:61:5: error: ‘timestamp_t’ does not name a type
   61 |     timestamp_t acq_rel_order_ [thread_count];
      |     ^~~~~~~~~~~
/usr/include/relacy/thread.hpp:62:5: error: ‘timestamp_t’ does not name a type
   62 |     timestamp_t acquire_fence_order_ [thread_count];
      |     ^~~~~~~~~~~
/usr/include/relacy/thread.hpp:63:5: error: ‘timestamp_t’ does not name a type
   63 |     timestamp_t release_fence_order_ [thread_count];
      |     ^~~~~~~~~~~
/usr/include/relacy/thread.hpp:105:38: error: ‘timestamp_t’ has not been declared
  105 |     void atomic_thread_fence_seq_cst(timestamp_t* seq_cst_fence_order)
      |                                      ^~~~~~~~~~~
/usr/include/relacy/thread.hpp:132:67: error: expected ‘,’ or ‘...’ before ‘data’
  132 |     virtual unsigned atomic_load_relaxed(atomic_data* RL_RESTRICT data)
      |                                                                   ^~~~
/usr/include/relacy/thread.hpp:137:67: error: expected ‘,’ or ‘...’ before ‘data’
  137 |     virtual unsigned atomic_load_acquire(atomic_data* RL_RESTRICT data)
      |                                                                   ^~~~
/usr/include/relacy/thread.hpp:142:67: error: expected ‘,’ or ‘...’ before ‘data’
  142 |     virtual unsigned atomic_load_seq_cst(atomic_data* RL_RESTRICT data)
      |                                                                   ^~~~
/usr/include/relacy/thread.hpp:147:71: error: expected ‘,’ or ‘...’ before ‘data’
  147 |     virtual unsigned atomic_load_relaxed_rmw(atomic_data* RL_RESTRICT data)
      |                                                                       ^~~~
/usr/include/relacy/thread.hpp:152:71: error: expected ‘,’ or ‘...’ before ‘data’
  152 |     virtual unsigned atomic_load_acquire_rmw(atomic_data* RL_RESTRICT data)
      |                                                                       ^~~~
/usr/include/relacy/thread.hpp:157:71: error: expected ‘,’ or ‘...’ before ‘data’
  157 |     virtual unsigned atomic_load_seq_cst_rmw(atomic_data* RL_RESTRICT data)
      |                                                                       ^~~~
/usr/include/relacy/thread.hpp:162:68: error: expected ‘,’ or ‘...’ before ‘data’
  162 |     virtual unsigned atomic_store_relaxed(atomic_data* RL_RESTRICT data)
      |                                                                    ^~~~
/usr/include/relacy/thread.hpp:167:68: error: expected ‘,’ or ‘...’ before ‘data’
  167 |     virtual unsigned atomic_store_release(atomic_data* RL_RESTRICT data)
      |                                                                    ^~~~
/usr/include/relacy/thread.hpp:172:68: error: expected ‘,’ or ‘...’ before ‘data’
  172 |     virtual unsigned atomic_store_seq_cst(atomic_data* RL_RESTRICT data)
      |                                                                    ^~~~
/usr/include/relacy/thread.hpp:177:66: error: expected ‘,’ or ‘...’ before ‘data’
  177 |     virtual unsigned atomic_rmw_relaxed(atomic_data* RL_RESTRICT data, bool& aba)
      |                                                                  ^~~~
/usr/include/relacy/thread.hpp:182:66: error: expected ‘,’ or ‘...’ before ‘data’
  182 |     virtual unsigned atomic_rmw_acquire(atomic_data* RL_RESTRICT data, bool& aba)
      |                                                                  ^~~~
/usr/include/relacy/thread.hpp:187:66: error: expected ‘,’ or ‘...’ before ‘data’
  187 |     virtual unsigned atomic_rmw_release(atomic_data* RL_RESTRICT data, bool& aba)
      |                                                                  ^~~~
/usr/include/relacy/thread.hpp:192:66: error: expected ‘,’ or ‘...’ before ‘data’
  192 |     virtual unsigned atomic_rmw_acq_rel(atomic_data* RL_RESTRICT data, bool& aba)
      |                                                                  ^~~~
/usr/include/relacy/thread.hpp:197:66: error: expected ‘,’ or ‘...’ before ‘data’
  197 |     virtual unsigned atomic_rmw_seq_cst(atomic_data* RL_RESTRICT data, bool& aba)
      |                                                                  ^~~~
/usr/include/relacy/thread.hpp:203:46: error: ‘thread_count’ was not declared in this scope; did you mean ‘sched_count’?
  203 |     unsigned get_load_index(atomic_data_impl<thread_count>& var)
      |                                              ^~~~~~~~~~~~
      |                                              sched_count
/usr/include/relacy/thread.hpp:203:58: error: template argument 1 is invalid
  203 |     unsigned get_load_index(atomic_data_impl<thread_count>& var)
      |                                                          ^
/usr/include/relacy/thread.hpp:263:51: error: expected ‘,’ or ‘...’ before ‘data’
  263 |     unsigned atomic_load(atomic_data* RL_RESTRICT data)
      |                                                   ^~~~
/usr/include/relacy/thread.hpp:297:59: error: expected ‘,’ or ‘...’ before ‘data’
  297 |     virtual unsigned atomic_init(atomic_data* RL_RESTRICT data)
      |                                                           ^~~~
/usr/include/relacy/thread.hpp:318:52: error: expected ‘,’ or ‘...’ before ‘data’
  318 |     unsigned atomic_store(atomic_data* RL_RESTRICT data)
      |                                                    ^~~~
/usr/include/relacy/thread.hpp:375:50: error: expected ‘,’ or ‘...’ before ‘data’
  375 |     unsigned atomic_rmw(atomic_data* RL_RESTRICT data, bool& aba)
      |                                                  ^~~~
/usr/include/relacy/thread.hpp:391:13: error: ‘unpark_reason’ does not name a type
  391 |     virtual unpark_reason atomic_wait(atomic_data* RL_RESTRICT data, bool is_timed, bool allow_spurious_wakeup, debug_info_param info)
      |             ^~~~~~~~~~~~~
/usr/include/relacy/thread.hpp:402:13: error: ‘thread_id_t’ does not name a type; did you mean ‘thread_info’?
  402 |     virtual thread_id_t atomic_wake(atomic_data* RL_RESTRICT data, thread_id_t count, debug_info_param info)
      |             ^~~~~~~~~~~
      |             thread_info
In file included from /usr/include/relacy/random_scheduler.hpp:17,
                 from /usr/include/relacy/context.hpp:28:
/usr/include/relacy/scheduler.hpp:42:5: error: ‘thread_id_t’ does not name a type; did you mean ‘thread_info’?
   42 |     thread_id_t             index_;
      |     ^~~~~~~~~~~
      |     thread_info
/usr/include/relacy/scheduler.hpp:56:57: error: ‘thread_id_t’ has not been declared
   56 | template<typename derived_t, typename thread_info_type, thread_id_t thread_count>
      |                                                         ^~~~~~~~~~~
/usr/include/relacy/scheduler.hpp:57:25: error: expected template-name before ‘<’ token
   57 | class scheduler : nocopy<>
      |                         ^
/usr/include/relacy/scheduler.hpp:57:25: error: expected ‘{’ before ‘<’ token
/usr/include/relacy/random_scheduler.hpp:25:10: error: ‘thread_id_t’ has not been declared
   25 | template<thread_id_t thread_count>
      |          ^~~~~~~~~~~
/usr/include/relacy/random_scheduler.hpp:26:60: error: ‘thread_count’ was not declared in this scope; did you mean ‘sched_count’?
   26 | class random_scheduler : public scheduler<random_scheduler<thread_count>, scheduler_thread_info, thread_count>
      |                                                            ^~~~~~~~~~~~
      |                                                            sched_count
/usr/include/relacy/random_scheduler.hpp:26:98: error: ‘thread_count’ was not declared in this scope; did you mean ‘sched_count’?
   26 | class random_scheduler : public scheduler<random_scheduler<thread_count>, scheduler_thread_info, thread_count>
      |                                                                                                  ^~~~~~~~~~~~
      |                                                                                                  sched_count
/usr/include/relacy/random_scheduler.hpp:26:110: error: template argument 3 is invalid
   26 | class random_scheduler : public scheduler<random_scheduler<thread_count>, scheduler_thread_info, thread_count>
      |                                                                                                              ^
/usr/include/relacy/random_scheduler.hpp:29:40: error: ‘thread_count’ was not declared in this scope; did you mean ‘sched_count’?
   29 |     typedef scheduler<random_scheduler<thread_count>, scheduler_thread_info, thread_count> base_t;
      |                                        ^~~~~~~~~~~~
      |                                        sched_count
/usr/include/relacy/random_scheduler.hpp:29:78: error: ‘thread_count’ was not declared in this scope; did you mean ‘sched_count’?
   29 |     typedef scheduler<random_scheduler<thread_count>, scheduler_thread_info, thread_count> base_t;
      |                                                                              ^~~~~~~~~~~~
      |                                                                              sched_count
/usr/include/relacy/random_scheduler.hpp:29:90: error: template argument 3 is invalid
   29 |     typedef scheduler<random_scheduler<thread_count>, scheduler_thread_info, thread_count> base_t;
      |                                                                                          ^
/usr/include/relacy/random_scheduler.hpp:30:22: error: ‘base_t’ is not a class, namespace, or enumeration
   30 |     typedef typename base_t::thread_info_t thread_info_t;
      |                      ^~~~~~
/usr/include/relacy/random_scheduler.hpp:31:22: error: ‘base_t’ is not a class, namespace, or enumeration
   31 |     typedef typename base_t::shared_context_t shared_context_t;
      |                      ^~~~~~
/usr/include/relacy/random_scheduler.hpp:37:66: error: ‘thread_id_t’ has not been declared
   37 |     random_scheduler(test_params& params, shared_context_t& ctx, thread_id_t dynamic_thread_count)
      |                                                                  ^~~~~~~~~~~
/usr/include/relacy/random_scheduler.hpp:42:5: error: ‘thread_id_t’ does not name a type; did you mean ‘thread_info_t’?
   42 |     thread_id_t iteration_begin_impl()
      |     ^~~~~~~~~~~
      |     thread_info_t
/usr/include/relacy/random_scheduler.hpp:54:5: error: ‘thread_id_t’ does not name a type; did you mean ‘thread_info_t’?
   54 |     thread_id_t schedule_impl(unpark_reason& reason, unsigned /*yield*/)
      |     ^~~~~~~~~~~
      |     thread_info_t
/usr/include/relacy/random_scheduler.hpp:99:40: error: ‘sched_type’ has not been declared
   99 |     unsigned rand_impl(unsigned limit, sched_type t)
      |                                        ^~~~~~~~~~
/usr/include/relacy/random_scheduler.hpp:115:5: error: ‘iteration_t’ does not name a type
  115 |     iteration_t iteration_count_impl()
      |     ^~~~~~~~~~~
/usr/include/relacy/random_scheduler.hpp:128:26: error: ‘thread_id_t’ has not been declared
  128 |     void on_thread_block(thread_id_t /*th*/, bool /*yield*/)
      |                          ^~~~~~~~~~~
In file included from /usr/include/relacy/context.hpp:29:
/usr/include/relacy/full_search_scheduler.hpp:25:10: error: ‘thread_id_t’ has not been declared
   25 | template<thread_id_t thread_count>
      |          ^~~~~~~~~~~
/usr/include/relacy/full_search_scheduler.hpp:28:53: error: ‘thread_count’ was not declared in this scope; did you mean ‘sched_count’?
   28 |     unsigned                    yield_sched_count_ [thread_count];
      |                                                     ^~~~~~~~~~~~
      |                                                     sched_count
/usr/include/relacy/full_search_scheduler.hpp:29:50: error: ‘thread_count’ was not declared in this scope; did you mean ‘sched_count’?
   29 |     unsigned                    yield_priority_ [thread_count];
      |                                                  ^~~~~~~~~~~~
      |                                                  sched_count
/usr/include/relacy/full_search_scheduler.hpp:46:57: error: ‘thread_id_t’ has not been declared
   46 | template<typename derived_t, typename thread_info_type, thread_id_t thread_count>
      |                                                         ^~~~~~~~~~~
/usr/include/relacy/full_search_scheduler.hpp:48:53: error: ‘thread_count’ was not declared in this scope; did you mean ‘sched_count’?
   48 |     : public scheduler<derived_t, thread_info_type, thread_count>
      |                                                     ^~~~~~~~~~~~
      |                                                     sched_count
/usr/include/relacy/full_search_scheduler.hpp:48:65: error: template argument 3 is invalid
   48 |     : public scheduler<derived_t, thread_info_type, thread_count>
      |                                                                 ^
/usr/include/relacy/full_search_scheduler.hpp:51:52: error: ‘thread_count’ was not declared in this scope; did you mean ‘sched_count’?
   51 |     typedef scheduler<derived_t, thread_info_type, thread_count> base_t;
      |                                                    ^~~~~~~~~~~~
      |                                                    sched_count
/usr/include/relacy/full_search_scheduler.hpp:51:64: error: template argument 3 is invalid
   51 |     typedef scheduler<derived_t, thread_info_type, thread_count> base_t;
      |                                                                ^
/usr/include/relacy/full_search_scheduler.hpp:52:22: error: ‘base_t’ is not a class, namespace, or enumeration
   52 |     typedef typename base_t::thread_info_t thread_info_t;
      |                      ^~~~~~
/usr/include/relacy/full_search_scheduler.hpp:53:22: error: ‘base_t’ is not a class, namespace, or enumeration
   53 |     typedef typename base_t::shared_context_t shared_context_t;
      |                      ^~~~~~
/usr/include/relacy/full_search_scheduler.hpp:59:71: error: ‘thread_id_t’ has not been declared
   59 |     tree_search_scheduler(test_params& params, shared_context_t& ctx, thread_id_t dynamic_thread_count)
      |                                                                       ^~~~~~~~~~~
/usr/include/relacy/full_search_scheduler.hpp:68:5: error: ‘thread_id_t’ does not name a type; did you mean ‘thread_info_t’?
   68 |     thread_id_t iteration_begin_impl()
      |     ^~~~~~~~~~~
      |     thread_info_t
/usr/include/relacy/full_search_scheduler.hpp:122:5: error: ‘thread_id_t’ does not name a type; did you mean ‘thread_info_t’?
  122 |     thread_id_t schedule_impl(unpark_reason& reason, unsigned yield)
      |     ^~~~~~~~~~~
      |     thread_info_t
/usr/include/relacy/full_search_scheduler.hpp:255:40: error: ‘sched_type’ has not been declared
  255 |     unsigned rand_impl(unsigned limit, sched_type t)
      |                                        ^~~~~~~~~~
/usr/include/relacy/full_search_scheduler.hpp:283:5: error: ‘iteration_t’ does not name a type
  283 |     iteration_t iteration_count_impl()
      |     ^~~~~~~~~~~
/usr/include/relacy/full_search_scheduler.hpp:328:26: error: ‘thread_id_t’ has not been declared
  328 |     void on_thread_block(thread_id_t th, bool yield)
      |                          ^~~~~~~~~~~
/usr/include/relacy/full_search_scheduler.hpp:355:9: error: ‘sched_type’ does not name a type
  355 |         sched_type  type_;
      |         ^~~~~~~~~~
/usr/include/relacy/full_search_scheduler.hpp:359:22: error: expected nested-name-specifier before ‘vector’
  359 |     typedef typename vector<stree_node>::type stree_t;
      |                      ^~~~~~
/usr/include/relacy/full_search_scheduler.hpp:359:22: error: expected ‘;’ at end of member declaration
  359 |     typedef typename vector<stree_node>::type stree_t;
      |                      ^~~~~~
      |                            ;
/usr/include/relacy/full_search_scheduler.hpp:359:28: error: expected unqualified-id before ‘<’ token
  359 |     typedef typename vector<stree_node>::type stree_t;
      |                            ^
/usr/include/relacy/full_search_scheduler.hpp:360:5: error: ‘stree_t’ does not name a type
  360 |     stree_t         stree_;
      |     ^~~~~~~
/usr/include/relacy/full_search_scheduler.hpp:378:10: error: ‘thread_id_t’ has not been declared
  378 | template<thread_id_t thread_count>
      |          ^~~~~~~~~~~
/usr/include/relacy/full_search_scheduler.hpp:380:58: error: ‘thread_count’ was not declared in this scope; did you mean ‘sched_count’?
  380 |     : public tree_search_scheduler<full_search_scheduler<thread_count>
      |                                                          ^~~~~~~~~~~~
      |                                                          sched_count
/usr/include/relacy/full_search_scheduler.hpp:381:45: error: ‘thread_count’ was not declared in this scope; did you mean ‘sched_count’?
  381 |         , tree_search_scheduler_thread_info<thread_count>, thread_count>
      |                                             ^~~~~~~~~~~~
      |                                             sched_count
/usr/include/relacy/full_search_scheduler.hpp:381:57: error: template argument 1 is invalid
  381 |         , tree_search_scheduler_thread_info<thread_count>, thread_count>
      |                                                         ^
/usr/include/relacy/full_search_scheduler.hpp:381:60: error: ‘thread_count’ was not declared in this scope; did you mean ‘sched_count’?
  381 |         , tree_search_scheduler_thread_info<thread_count>, thread_count>
      |                                                            ^~~~~~~~~~~~
      |                                                            sched_count
/usr/include/relacy/full_search_scheduler.hpp:381:72: error: template argument 2 is invalid
  381 |         , tree_search_scheduler_thread_info<thread_count>, thread_count>
      |                                                                        ^
/usr/include/relacy/full_search_scheduler.hpp:381:72: error: template argument 3 is invalid
/usr/include/relacy/full_search_scheduler.hpp:384:57: error: ‘thread_count’ was not declared in this scope; did you mean ‘sched_count’?
  384 |     typedef tree_search_scheduler<full_search_scheduler<thread_count>
      |                                                         ^~~~~~~~~~~~
      |                                                         sched_count
/usr/include/relacy/full_search_scheduler.hpp:385:45: error: ‘thread_count’ was not declared in this scope; did you mean ‘sched_count’?
  385 |         , tree_search_scheduler_thread_info<thread_count>, thread_count> base_t;
      |                                             ^~~~~~~~~~~~
      |                                             sched_count
/usr/include/relacy/full_search_scheduler.hpp:385:57: error: template argument 1 is invalid
  385 |         , tree_search_scheduler_thread_info<thread_count>, thread_count> base_t;
      |                                                         ^
/usr/include/relacy/full_search_scheduler.hpp:385:60: error: ‘thread_count’ was not declared in this scope; did you mean ‘sched_count’?
  385 |         , tree_search_scheduler_thread_info<thread_count>, thread_count> base_t;
      |                                                            ^~~~~~~~~~~~
      |                                                            sched_count
/usr/include/relacy/full_search_scheduler.hpp:385:72: error: template argument 2 is invalid
  385 |         , tree_search_scheduler_thread_info<thread_count>, thread_count> base_t;
      |                                                                        ^
/usr/include/relacy/full_search_scheduler.hpp:385:72: error: template argument 3 is invalid
/usr/include/relacy/full_search_scheduler.hpp:386:22: error: ‘base_t’ is not a class, namespace, or enumeration
  386 |     typedef typename base_t::thread_info_t thread_info_t;
      |                      ^~~~~~
/usr/include/relacy/full_search_scheduler.hpp:387:22: error: ‘base_t’ is not a class, namespace, or enumeration
  387 |     typedef typename base_t::shared_context_t shared_context_t;
      |                      ^~~~~~
/usr/include/relacy/full_search_scheduler.hpp:389:71: error: ‘thread_id_t’ has not been declared
  389 |     full_search_scheduler(test_params& params, shared_context_t& ctx, thread_id_t dynamic_thread_count)
      |                                                                       ^~~~~~~~~~~
In file included from /usr/include/relacy/context.hpp:30:
/usr/include/relacy/context_bound_scheduler.hpp:25:10: error: ‘thread_id_t’ has not been declared
   25 | template<thread_id_t thread_count>
      |          ^~~~~~~~~~~
/usr/include/relacy/context_bound_scheduler.hpp:26:80: error: ‘thread_count’ was not declared in this scope; did you mean ‘sched_count’?
   26 | struct context_bound_scheduler_thread_info : tree_search_scheduler_thread_info<thread_count>
      |                                                                                ^~~~~~~~~~~~
      |                                                                                sched_count
/usr/include/relacy/context_bound_scheduler.hpp:26:92: error: template argument 1 is invalid
   26 | struct context_bound_scheduler_thread_info : tree_search_scheduler_thread_info<thread_count>
      |                                                                                            ^
/usr/include/relacy/context_bound_scheduler.hpp:42:10: error: ‘thread_id_t’ has not been declared
   42 | template<thread_id_t thread_count>
      |          ^~~~~~~~~~~
/usr/include/relacy/context_bound_scheduler.hpp:44:60: error: ‘thread_count’ was not declared in this scope; did you mean ‘sched_count’?
   44 |     : public tree_search_scheduler<context_bound_scheduler<thread_count>
      |                                                            ^~~~~~~~~~~~
      |                                                            sched_count
/usr/include/relacy/context_bound_scheduler.hpp:45:47: error: ‘thread_count’ was not declared in this scope; did you mean ‘sched_count’?
   45 |         , context_bound_scheduler_thread_info<thread_count>, thread_count>
      |                                               ^~~~~~~~~~~~
      |                                               sched_count
/usr/include/relacy/context_bound_scheduler.hpp:45:59: error: template argument 1 is invalid
   45 |         , context_bound_scheduler_thread_info<thread_count>, thread_count>
      |                                                           ^
/usr/include/relacy/context_bound_scheduler.hpp:45:62: error: ‘thread_count’ was not declared in this scope; did you mean ‘sched_count’?
   45 |         , context_bound_scheduler_thread_info<thread_count>, thread_count>
      |                                                              ^~~~~~~~~~~~
      |                                                              sched_count
/usr/include/relacy/context_bound_scheduler.hpp:45:74: error: template argument 2 is invalid
   45 |         , context_bound_scheduler_thread_info<thread_count>, thread_count>
      |                                                                          ^
/usr/include/relacy/context_bound_scheduler.hpp:45:74: error: template argument 3 is invalid
/usr/include/relacy/context_bound_scheduler.hpp:48:59: error: ‘thread_count’ was not declared in this scope; did you mean ‘sched_count’?
   48 |     typedef tree_search_scheduler<context_bound_scheduler<thread_count>
      |                                                           ^~~~~~~~~~~~
      |                                                           sched_count
/usr/include/relacy/context_bound_scheduler.hpp:49:47: error: ‘thread_count’ was not declared in this scope; did you mean ‘sched_count’?
   49 |         , context_bound_scheduler_thread_info<thread_count>, thread_count> base_t;
      |                                               ^~~~~~~~~~~~
      |                                               sched_count
/usr/include/relacy/context_bound_scheduler.hpp:49:59: error: template argument 1 is invalid
   49 |         , context_bound_scheduler_thread_info<thread_count>, thread_count> base_t;
      |                                                           ^
/usr/include/relacy/context_bound_scheduler.hpp:49:62: error: ‘thread_count’ was not declared in this scope; did you mean ‘sched_count’?
   49 |         , context_bound_scheduler_thread_info<thread_count>, thread_count> base_t;
      |                                                              ^~~~~~~~~~~~
      |                                                              sched_count
/usr/include/relacy/context_bound_scheduler.hpp:49:74: error: template argument 2 is invalid
   49 |         , context_bound_scheduler_thread_info<thread_count>, thread_count> base_t;
      |                                                                          ^
/usr/include/relacy/context_bound_scheduler.hpp:49:74: error: template argument 3 is invalid
/usr/include/relacy/context_bound_scheduler.hpp:50:22: error: ‘base_t’ is not a class, namespace, or enumeration
   50 |     typedef typename base_t::thread_info_t thread_info_t;
      |                      ^~~~~~
/usr/include/relacy/context_bound_scheduler.hpp:51:22: error: ‘base_t’ is not a class, namespace, or enumeration
   51 |     typedef typename base_t::shared_context_t shared_context_t;
      |                      ^~~~~~
/usr/include/relacy/context_bound_scheduler.hpp:53:73: error: ‘thread_id_t’ has not been declared
   53 |     context_bound_scheduler(test_params& params, shared_context_t& ctx, thread_id_t dynamic_thread_count)
      |                                                                         ^~~~~~~~~~~
/usr/include/relacy/context_bound_scheduler.hpp:58:5: error: ‘thread_id_t’ does not name a type; did you mean ‘thread_info_t’?
   58 |     thread_id_t iteration_begin_impl()
      |     ^~~~~~~~~~~
      |     thread_info_t
/usr/include/relacy/context.hpp:37:10: error: ‘thread_id_t’ has not been declared
   37 | template<thread_id_t thread_count> class generic_mutex_data_impl;
      |          ^~~~~~~~~~~
/usr/include/relacy/context.hpp:38:10: error: ‘thread_id_t’ has not been declared
   38 | template<thread_id_t thread_count> class condvar_data_impl;
      |          ^~~~~~~~~~~
/usr/include/relacy/context.hpp:39:10: error: ‘thread_id_t’ has not been declared
   39 | template<thread_id_t thread_count> class sema_data_impl;
      |          ^~~~~~~~~~~
/usr/include/relacy/context.hpp:40:10: error: ‘thread_id_t’ has not been declared
   40 | template<thread_id_t thread_count> class event_data_impl;
      |          ^~~~~~~~~~~
/usr/include/relacy/context.hpp:56:5: error: ‘thread_id_t’ does not name a type; did you mean ‘thread_info’?
   56 |     thread_id_t thread_;
      |     ^~~~~~~~~~~
      |     thread_info
/usr/include/relacy/context.hpp: In member function ‘void rl::unpark_event::output(std::ostream&) const’:
/usr/include/relacy/context.hpp:60:38: error: ‘thread_’ was not declared in this scope; did you mean ‘pthread_t’?
   60 |         s << "unblocking thread " << thread_;
      |                                      ^~~~~~~
      |                                      pthread_t
/usr/include/relacy/context.hpp: At global scope:
/usr/include/relacy/context.hpp:104:123: error: template argument 1 is invalid
  104 |     : thread_local_contxt_impl<context_addr_hash_impl<context, test_t::params::thread_count>, test_t::params::thread_count>
      |                                                                                                                           ^
/usr/include/relacy/context.hpp:109:41: error: template argument 1 is invalid
  109 |             test_t::params::thread_count>
      |                                         ^
/usr/include/relacy/context.hpp:113:11: error: ‘base_t’ is not a class, namespace, or enumeration
  113 |     using base_t::params_;
      |           ^~~~~~
/usr/include/relacy/context.hpp:114:11: error: ‘base_t’ is not a class, namespace, or enumeration
  114 |     using base_t::history_;
      |           ^~~~~~
/usr/include/relacy/context.hpp:115:11: error: ‘base_t’ is not a class, namespace, or enumeration
  115 |     using base_t::threadx_;
      |           ^~~~~~
/usr/include/relacy/context.hpp:116:11: error: ‘base_t’ is not a class, namespace, or enumeration
  116 |     using base_t::disable_preemption_;
      |           ^~~~~~
/usr/include/relacy/context.hpp:117:11: error: ‘base_t’ is not a class, namespace, or enumeration
  117 |     using base_t::disable_alloc_;
      |           ^~~~~~
/usr/include/relacy/context.hpp:118:11: error: ‘base_t’ is not a class, namespace, or enumeration
  118 |     using base_t::invariant_executing;
      |           ^~~~~~
/usr/include/relacy/context.hpp:120:12: error: ‘thread_id_t’ does not name a type; did you mean ‘thread_info’?
  120 |     static thread_id_t const main_thread_id = -1;
      |            ^~~~~~~~~~~
      |            thread_info
/usr/include/relacy/context.hpp:121:12: error: ‘thread_id_t’ does not name a type; did you mean ‘thread_info’?
  121 |     static thread_id_t const static_thread_count = test_t::params::static_thread_count;
      |            ^~~~~~~~~~~
      |            thread_info
/usr/include/relacy/context.hpp:122:12: error: ‘thread_id_t’ does not name a type; did you mean ‘thread_info’?
  122 |     static thread_id_t const dynamic_thread_count = test_t::params::dynamic_thread_count;
      |            ^~~~~~~~~~~
      |            thread_info
/usr/include/relacy/context.hpp:123:12: error: ‘thread_id_t’ does not name a type; did you mean ‘thread_info’?
  123 |     static thread_id_t const thread_count = test_t::params::thread_count;
      |            ^~~~~~~~~~~
      |            thread_info
/usr/include/relacy/context.hpp:125:5: error: ‘iteration_t’ does not name a type
  125 |     iteration_t                     current_iter_;
      |     ^~~~~~~~~~~
/usr/include/relacy/context.hpp:127:5: error: ‘string’ does not name a type; did you mean ‘stdin’?
  127 |     string                          test_result_str_;
      |     ^~~~~~
      |     stdin
/usr/include/relacy/context.hpp:128:5: error: ‘fiber_t’ does not name a type; did you mean ‘timer_t’?
  128 |     fiber_t                         main_fiber_;
      |     ^~~~~~~
      |     timer_t
/usr/include/relacy/context.hpp:130:37: error: field ‘memory_’ has incomplete type ‘rl::memory_mgr’
  130 |     memory_mgr                      memory_;
      |                                     ^~~~~~~
/usr/include/relacy/memory.hpp:23:7: note: forward declaration of ‘class rl::memory_mgr’
   23 | class memory_mgr : nocopy<>
      |       ^~~~~~~~~~
/usr/include/relacy/context.hpp:131:5: error: ‘iteration_t’ does not name a type
  131 |     iteration_t                     start_iteration_;
      |     ^~~~~~~~~~~
/usr/include/relacy/context.hpp:139:5: error: ‘timestamp_t’ does not name a type
  139 |     timestamp_t                     seq_cst_fence_order_ [thread_count];
      |     ^~~~~~~~~~~
/usr/include/relacy/context.hpp:141:5: error: ‘aligned’ does not name a type; did you mean ‘signed’?
  141 |     aligned<thread_info<thread_count> > threads_ [thread_count];
      |     ^~~~~~~
      |     signed
/usr/include/relacy/context.hpp:143:17: error: ‘thread_count’ was not declared in this scope; did you mean ‘sched_count’?
  143 |     thread_info<thread_count>& threadi()
      |                 ^~~~~~~~~~~~
      |                 sched_count
/usr/include/relacy/context.hpp:143:29: error: template argument 1 is invalid
  143 |     thread_info<thread_count>& threadi()
      |                             ^
/usr/include/relacy/context.hpp:148:37: error: ‘thread_count’ was not declared in this scope; did you mean ‘sched_count’?
  148 |     slab_allocator<atomic_data_impl<thread_count> >*        atomic_alloc_;
      |                                     ^~~~~~~~~~~~
      |                                     sched_count
/usr/include/relacy/context.hpp:148:49: error: template argument 1 is invalid
  148 |     slab_allocator<atomic_data_impl<thread_count> >*        atomic_alloc_;
      |                                                 ^
/usr/include/relacy/context.hpp:148:51: error: template argument 1 is invalid
  148 |     slab_allocator<atomic_data_impl<thread_count> >*        atomic_alloc_;
      |                                                   ^
/usr/include/relacy/context.hpp:149:34: error: ‘thread_count’ was not declared in this scope; did you mean ‘sched_count’?
  149 |     slab_allocator<var_data_impl<thread_count> >*           var_alloc_;
      |                                  ^~~~~~~~~~~~
      |                                  sched_count
/usr/include/relacy/context.hpp:149:46: error: template argument 1 is invalid
  149 |     slab_allocator<var_data_impl<thread_count> >*           var_alloc_;
      |                                              ^
/usr/include/relacy/context.hpp:149:48: error: template argument 1 is invalid
  149 |     slab_allocator<var_data_impl<thread_count> >*           var_alloc_;
      |                                                ^
/usr/include/relacy/context.hpp:150:44: error: ‘thread_count’ was not declared in this scope; did you mean ‘sched_count’?
  150 |     slab_allocator<generic_mutex_data_impl<thread_count> >* mutex_alloc_;
      |                                            ^~~~~~~~~~~~
      |                                            sched_count
/usr/include/relacy/context.hpp:150:56: error: template argument 1 is invalid
  150 |     slab_allocator<generic_mutex_data_impl<thread_count> >* mutex_alloc_;
      |                                                        ^
/usr/include/relacy/context.hpp:150:58: error: template argument 1 is invalid
  150 |     slab_allocator<generic_mutex_data_impl<thread_count> >* mutex_alloc_;
      |                                                          ^
/usr/include/relacy/context.hpp:151:38: error: ‘thread_count’ was not declared in this scope; did you mean ‘sched_count’?
  151 |     slab_allocator<condvar_data_impl<thread_count> >*       condvar_alloc_;
      |                                      ^~~~~~~~~~~~
      |                                      sched_count
/usr/include/relacy/context.hpp:151:50: error: template argument 1 is invalid
  151 |     slab_allocator<condvar_data_impl<thread_count> >*       condvar_alloc_;
      |                                                  ^
/usr/include/relacy/context.hpp:151:52: error: template argument 1 is invalid
  151 |     slab_allocator<condvar_data_impl<thread_count> >*       condvar_alloc_;
      |                                                    ^
/usr/include/relacy/context.hpp:152:35: error: ‘thread_count’ was not declared in this scope; did you mean ‘sched_count’?
  152 |     slab_allocator<sema_data_impl<thread_count> >*          sema_alloc_;
      |                                   ^~~~~~~~~~~~
      |                                   sched_count
/usr/include/relacy/context.hpp:152:47: error: template argument 1 is invalid
  152 |     slab_allocator<sema_data_impl<thread_count> >*          sema_alloc_;
      |                                               ^
/usr/include/relacy/context.hpp:152:49: error: template argument 1 is invalid
  152 |     slab_allocator<sema_data_impl<thread_count> >*          sema_alloc_;
      |                                                 ^
/usr/include/relacy/context.hpp:153:36: error: ‘thread_count’ was not declared in this scope; did you mean ‘sched_count’?
  153 |     slab_allocator<event_data_impl<thread_count> >*         event_alloc_;
      |                                    ^~~~~~~~~~~~
      |                                    sched_count
/usr/include/relacy/context.hpp:153:48: error: template argument 1 is invalid
  153 |     slab_allocator<event_data_impl<thread_count> >*         event_alloc_;
      |                                                ^
/usr/include/relacy/context.hpp:153:50: error: template argument 1 is invalid
  153 |     slab_allocator<event_data_impl<thread_count> >*         event_alloc_;
      |                                                  ^
/usr/include/relacy/context.hpp:177:13: error: ‘unpark_reason’ does not name a type
  177 |     virtual unpark_reason wfmo_park(void** ws,
      |             ^~~~~~~~~~~~~
/usr/include/relacy/context.hpp:277:53: error: ‘debug_info_param’ has not been declared
  277 |     virtual void* alloc(size_t size, bool is_array, debug_info_param info)
      |                                                     ^~~~~~~~~~~~~~~~
/usr/include/relacy/context.hpp:301:47: error: ‘debug_info_param’ has not been declared
  301 |     virtual void free(void* p, bool is_array, debug_info_param info)
      |                                               ^~~~~~~~~~~~~~~~
/usr/include/relacy/context.hpp:316:5: error: ‘debug_info’ does not name a type
  316 |     debug_info last_info_;
      |     ^~~~~~~~~~
/usr/include/relacy/context.hpp:341:33: error: ‘debug_info_param’ has not been declared
  341 |     virtual void set_debug_info(debug_info_param info)
      |                                 ^~~~~~~~~~~~~~~~
/usr/include/relacy/context.hpp:367:13: error: ‘unpark_reason’ does not name a type
  367 |     virtual unpark_reason park_current_thread(bool is_timed,
      |             ^~~~~~~~~~~~~
/usr/include/relacy/context.hpp:392:32: error: ‘thread_id_t’ has not been declared
  392 |     virtual void unpark_thread(thread_id_t th, bool do_switch, debug_info_param info)
      |                                ^~~~~~~~~~~
/usr/include/relacy/context.hpp:392:64: error: ‘debug_info_param’ has not been declared
  392 |     virtual void unpark_thread(thread_id_t th, bool do_switch, debug_info_param info)
      |                                                                ^~~~~~~~~~~~~~~~
/usr/include/relacy/context.hpp:405:30: error: ‘debug_info_param’ has not been declared
  405 |     virtual void switch_back(debug_info_param info)
      |                              ^~~~~~~~~~~~~~~~
/usr/include/relacy/context.hpp:419:65: error: ‘debug_info_param’ has not been declared
  419 |     void ensure(bool cond, char const* desc, test_result_e res, debug_info_param info)
      |                                                                 ^~~~~~~~~~~~~~~~
/usr/include/relacy/context.hpp:425:65: error: ‘debug_info_param’ has not been declared
  425 |     virtual void fail_test(char const* desc, test_result_e res, debug_info_param info)
      |                                                                 ^~~~~~~~~~~~~~~~
/usr/include/relacy/context.hpp:445:45: error: ‘debug_info_param’ has not been declared
  445 |     virtual void rl_until(char const* desc, debug_info_param info)
      |                                             ^~~~~~~~~~~~~~~~
/usr/include/relacy/context.hpp:550:40: error: ‘debug_info_param’ has not been declared
  550 |     virtual void yield(unsigned count, debug_info_param info)
      |                                        ^~~~~~~~~~~~~~~~
/usr/include/relacy/context.hpp:652:5: error: ‘RL_INLINE’ does not name a type
  652 |     RL_INLINE static void reset_thread(thread_info<thread_count>& ti)
      |     ^~~~~~~~~
/usr/include/relacy/context.hpp:652:5: note: the macro ‘RL_INLINE’ had not yet been defined
/usr/include/relacy/platform.hpp:241: note: it was later defined here
  241 | #   define RL_INLINE inline
      | 
/usr/include/relacy/context.hpp:666:20: error: ‘iteration_t’ has not been declared
  666 |     void iteration(iteration_t iter)
      |                    ^~~~~~~~~~~
/usr/include/relacy/context.hpp:699:26: error: ‘thread_id_t’ has not been declared
  699 |     void switch_to_fiber(thread_id_t th)
      |                          ^~~~~~~~~~~
/usr/include/relacy/context.hpp:713:26: error: ‘iteration_t’ has not been declared
  713 |     void output_progress(iteration_t iter)
      |                          ^~~~~~~~~~~
/usr/include/relacy/context.hpp:726:43: error: ‘sched_type’ has not been declared
  726 |     virtual unsigned rand(unsigned limit, sched_type t)
      |                                           ^~~~~~~~~~
/usr/include/relacy/context.hpp:796:13: error: ‘thread_id_t’ does not name a type; did you mean ‘thread_info’?
  796 |     virtual thread_id_t get_thread_count() const
      |             ^~~~~~~~~~~
      |             thread_info
/usr/include/relacy/context.hpp: In member function ‘int& rl::context_impl<test_t, scheduler_t>::threadi()’:
/usr/include/relacy/context.hpp:145:41: error: ‘thread_count’ was not declared in this scope; did you mean ‘sched_count’?
  145 |         return *static_cast<thread_info<thread_count>*>(threadx_);
      |                                         ^~~~~~~~~~~~
      |                                         sched_count
/usr/include/relacy/context.hpp:145:53: error: template argument 1 is invalid
  145 |         return *static_cast<thread_info<thread_count>*>(threadx_);
      |                                                     ^
/usr/include/relacy/context.hpp:145:54: error: expected ‘>’ before ‘*’ token
  145 |         return *static_cast<thread_info<thread_count>*>(threadx_);
      |                                                      ^
/usr/include/relacy/context.hpp:145:54: error: expected ‘(’ before ‘*’ token
/usr/include/relacy/context.hpp:145:55: error: expected primary-expression before ‘>’ token
  145 |         return *static_cast<thread_info<thread_count>*>(threadx_);
      |                                                       ^
/usr/include/relacy/context.hpp:145:57: error: ‘threadx_’ was not declared in this scope; did you mean ‘threadi’?
  145 |         return *static_cast<thread_info<thread_count>*>(threadx_);
      |                                                         ^~~~~~~~
      |                                                         threadi
/usr/include/relacy/context.hpp:145:66: error: expected ‘)’ before ‘;’ token
  145 |         return *static_cast<thread_info<thread_count>*>(threadx_);
      |                                                                  ^
/usr/include/relacy/context.hpp: In member function ‘virtual rl::atomic_data* rl::context_impl<test_t, scheduler_t>::atomic_ctor(void*)’:
/usr/include/relacy/context.hpp:157:36: error: request for member ‘alloc’ in ‘((rl::context_impl<test_t, scheduler_t>*)this)->rl::context_impl<test_t, scheduler_t>::atomic_alloc_->’, which is of non-class type ‘int’
  157 |         return new (atomic_alloc_->alloc(ctx)) atomic_data_impl<thread_count> ();
      |                                    ^~~~~
/usr/include/relacy/context.hpp:157:65: error: ‘thread_count’ was not declared in this scope; did you mean ‘sched_count’?
  157 |         return new (atomic_alloc_->alloc(ctx)) atomic_data_impl<thread_count> ();
      |                                                                 ^~~~~~~~~~~~
      |                                                                 sched_count
/usr/include/relacy/context.hpp:157:77: error: template argument 1 is invalid
  157 |         return new (atomic_alloc_->alloc(ctx)) atomic_data_impl<thread_count> ();
      |                                                                             ^
/usr/include/relacy/context.hpp: In member function ‘virtual void rl::context_impl<test_t, scheduler_t>::atomic_dtor(rl::atomic_data*)’:
/usr/include/relacy/context.hpp:162:38: error: ‘thread_count’ was not declared in this scope; did you mean ‘sched_count’?
  162 |         static_cast<atomic_data_impl<thread_count>*>(data)->~atomic_data_impl<thread_count>();
      |                                      ^~~~~~~~~~~~
      |                                      sched_count
/usr/include/relacy/context.hpp:162:50: error: template argument 1 is invalid
  162 |         static_cast<atomic_data_impl<thread_count>*>(data)->~atomic_data_impl<thread_count>();
      |                                                  ^
/usr/include/relacy/context.hpp:162:51: error: expected ‘>’ before ‘*’ token
  162 |         static_cast<atomic_data_impl<thread_count>*>(data)->~atomic_data_impl<thread_count>();
      |                                                   ^
/usr/include/relacy/context.hpp:162:51: error: expected ‘(’ before ‘*’ token
/usr/include/relacy/context.hpp:162:52: error: expected primary-expression before ‘>’ token
  162 |         static_cast<atomic_data_impl<thread_count>*>(data)->~atomic_data_impl<thread_count>();
      |                                                    ^
/usr/include/relacy/context.hpp:162:94: error: expected ‘)’ before ‘;’ token
  162 |         static_cast<atomic_data_impl<thread_count>*>(data)->~atomic_data_impl<thread_count>();
      |                                                                                              ^
/usr/include/relacy/context.hpp:163:24: error: request for member ‘free’ in ‘((rl::context_impl<test_t, scheduler_t>*)this)->rl::context_impl<test_t, scheduler_t>::atomic_alloc_->’, which is of non-class type ‘int’
  163 |         atomic_alloc_->free(static_cast<atomic_data_impl<thread_count>*>(data));
      |                        ^~~~
/usr/include/relacy/context.hpp:163:71: error: expected ‘>’ before ‘*’ token
  163 |         atomic_alloc_->free(static_cast<atomic_data_impl<thread_count>*>(data));
      |                                                                       ^
/usr/include/relacy/context.hpp:163:71: error: expected ‘(’ before ‘*’ token
/usr/include/relacy/context.hpp:163:72: error: expected primary-expression before ‘>’ token
  163 |         atomic_alloc_->free(static_cast<atomic_data_impl<thread_count>*>(data));
      |                                                                        ^
/usr/include/relacy/context.hpp: In member function ‘virtual rl::var_data* rl::context_impl<test_t, scheduler_t>::var_ctor()’:
/usr/include/relacy/context.hpp:168:33: error: request for member ‘alloc’ in ‘((rl::context_impl<test_t, scheduler_t>*)this)->rl::context_impl<test_t, scheduler_t>::var_alloc_->’, which is of non-class type ‘int’
  168 |         return new (var_alloc_->alloc()) var_data_impl<thread_count> ();
      |                                 ^~~~~
/usr/include/relacy/context.hpp:168:56: error: ‘thread_count’ was not declared in this scope; did you mean ‘sched_count’?
  168 |         return new (var_alloc_->alloc()) var_data_impl<thread_count> ();
      |                                                        ^~~~~~~~~~~~
      |                                                        sched_count
/usr/include/relacy/context.hpp:168:68: error: template argument 1 is invalid
  168 |         return new (var_alloc_->alloc()) var_data_impl<thread_count> ();
      |                                                                    ^
/usr/include/relacy/context.hpp: In member function ‘virtual void rl::context_impl<test_t, scheduler_t>::var_dtor(rl::var_data*)’:
/usr/include/relacy/context.hpp:173:35: error: ‘thread_count’ was not declared in this scope; did you mean ‘sched_count’?
  173 |         static_cast<var_data_impl<thread_count>*>(data)->~var_data_impl<thread_count>();
      |                                   ^~~~~~~~~~~~
      |                                   sched_count
/usr/include/relacy/context.hpp:173:47: error: template argument 1 is invalid
  173 |         static_cast<var_data_impl<thread_count>*>(data)->~var_data_impl<thread_count>();
      |                                               ^
/usr/include/relacy/context.hpp:173:48: error: expected ‘>’ before ‘*’ token
  173 |         static_cast<var_data_impl<thread_count>*>(data)->~var_data_impl<thread_count>();
      |                                                ^
/usr/include/relacy/context.hpp:173:48: error: expected ‘(’ before ‘*’ token
/usr/include/relacy/context.hpp:173:49: error: expected primary-expression before ‘>’ token
  173 |         static_cast<var_data_impl<thread_count>*>(data)->~var_data_impl<thread_count>();
      |                                                 ^
/usr/include/relacy/context.hpp:173:88: error: expected ‘)’ before ‘;’ token
  173 |         static_cast<var_data_impl<thread_count>*>(data)->~var_data_impl<thread_count>();
      |                                                                                        ^
/usr/include/relacy/context.hpp:174:21: error: request for member ‘free’ in ‘((rl::context_impl<test_t, scheduler_t>*)this)->rl::context_impl<test_t, scheduler_t>::var_alloc_->’, which is of non-class type ‘int’
  174 |         var_alloc_->free(static_cast<var_data_impl<thread_count>*>(data));
      |                     ^~~~
/usr/include/relacy/context.hpp:174:65: error: expected ‘>’ before ‘*’ token
  174 |         var_alloc_->free(static_cast<var_data_impl<thread_count>*>(data));
      |                                                                 ^
/usr/include/relacy/context.hpp:174:65: error: expected ‘(’ before ‘*’ token
/usr/include/relacy/context.hpp:174:66: error: expected primary-expression before ‘>’ token
  174 |         var_alloc_->free(static_cast<var_data_impl<thread_count>*>(data));
      |                                                                  ^
/usr/include/relacy/context.hpp: In constructor ‘rl::context_impl<test_t, scheduler_t>::context_impl(rl::test_params&, shared_context_t&)’:
/usr/include/relacy/context.hpp:191:11: error: ‘typedef int rl::context_impl<test_t, scheduler_t>::base_t’ is not a non-static data member of ‘rl::context_impl<test_t, scheduler_t>’
  191 |         : base_t(thread_count, params)
      |           ^~~~~~
/usr/include/relacy/context.hpp:191:18: error: ‘thread_count’ was not declared in this scope; did you mean ‘sched_count’?
  191 |         : base_t(thread_count, params)
      |                  ^~~~~~~~~~~~
      |                  sched_count
/usr/include/relacy/context.hpp:192:11: error: class ‘rl::context_impl<test_t, scheduler_t>’ does not have any field named ‘current_iter_’
  192 |         , current_iter_(0)
      |           ^~~~~~~~~~~~~
/usr/include/relacy/context.hpp:193:11: error: class ‘rl::context_impl<test_t, scheduler_t>’ does not have any field named ‘start_iteration_’
  193 |         , start_iteration_(1)
      |           ^~~~~~~~~~~~~~~~
/usr/include/relacy/context.hpp:194:32: error: ‘dynamic_thread_count’ was not declared in this scope
  194 |         , sched_(params, sctx, dynamic_thread_count)
      |                                ^~~~~~~~~~~~~~~~~~~~
/usr/include/relacy/context.hpp:197:24: error: ‘rl::context’ is not a base of ‘rl::context_impl<test_t, scheduler_t>’
  197 |         this->context::seq_cst_fence_order_ = this->seq_cst_fence_order_;
      |                        ^~~~~~~~~~~~~~~~~~~~
/usr/include/relacy/context.hpp:203:9: error: ‘threadx_’ was not declared in this scope; did you mean ‘threadi’?
  203 |         threadx_ = 0;
      |         ^~~~~~~~
      |         threadi
/usr/include/relacy/context.hpp:205:9: error: ‘invariant_executing’ was not declared in this scope
  205 |         invariant_executing = false;
      |         ^~~~~~~~~~~~~~~~~~~
/usr/include/relacy/context.hpp:207:27: error: ‘main_fiber_’ was not declared in this scope
  207 |         create_main_fiber(main_fiber_);
      |                           ^~~~~~~~~~~
/usr/include/relacy/context.hpp:212:24: error: ‘logic_error’ is not a member of ‘std’
  212 |             throw std::logic_error("no threads created");
      |                        ^~~~~~~~~~~
/usr/include/relacy/context.hpp:215:75: error: template argument 1 is invalid
  215 |         atomic_alloc_ = new slab_allocator<atomic_data_impl<thread_count> >();
      |                                                                           ^
/usr/include/relacy/context.hpp:216:69: error: template argument 1 is invalid
  216 |         var_alloc_ = new slab_allocator<var_data_impl<thread_count> >();
      |                                                                     ^
/usr/include/relacy/context.hpp:217:81: error: template argument 1 is invalid
  217 |         mutex_alloc_ = new slab_allocator<generic_mutex_data_impl<thread_count> >();
      |                                                                                 ^
/usr/include/relacy/context.hpp:218:77: error: template argument 1 is invalid
  218 |         condvar_alloc_ = new slab_allocator<condvar_data_impl<thread_count> >();
      |                                                                             ^
/usr/include/relacy/context.hpp:219:71: error: template argument 1 is invalid
  219 |         sema_alloc_ = new slab_allocator<sema_data_impl<thread_count> >();
      |                                                                       ^
/usr/include/relacy/context.hpp:220:73: error: template argument 1 is invalid
  220 |         event_alloc_ = new slab_allocator<event_data_impl<thread_count> >();
      |                                                                         ^
/usr/include/relacy/context.hpp:222:14: error: ‘thread_id_t’ was not declared in this scope; did you mean ‘thread_info’?
  222 |         for (thread_id_t i = 0; i != thread_count; ++i)
      |              ^~~~~~~~~~~
      |              thread_info
/usr/include/relacy/context.hpp:222:33: error: ‘i’ was not declared in this scope
  222 |         for (thread_id_t i = 0; i != thread_count; ++i)
      |                                 ^
/usr/include/relacy/context.hpp:224:19: error: ‘threads_’ was not declared in this scope; did you mean ‘threadi’?
  224 |             new (&threads_[i]) thread_info<thread_count> (i);
      |                   ^~~~~~~~
      |                   threadi
/usr/include/relacy/context.hpp:228:14: error: ‘thread_id_t’ was not declared in this scope; did you mean ‘thread_info’?
  228 |         for (thread_id_t i = 0; i != thread_count; ++i)
      |              ^~~~~~~~~~~
      |              thread_info
/usr/include/relacy/context.hpp:228:33: error: ‘i’ was not declared in this scope
  228 |         for (thread_id_t i = 0; i != thread_count; ++i)
      |                                 ^
/usr/include/relacy/context.hpp:231:26: error: ‘threads_’ was not declared in this scope; did you mean ‘threadi’?
  231 |             create_fiber(threads_[i].fiber_, &context_impl::fiber_proc, (void*)(intptr_t)i);
      |                          ^~~~~~~~
      |                          threadi
/usr/include/relacy/context.hpp:234:9: error: ‘disable_alloc_’ was not declared in this scope
  234 |         disable_alloc_ = 0;
      |         ^~~~~~~~~~~~~~
/usr/include/relacy/context.hpp: In destructor ‘rl::context_impl<test_t, scheduler_t>::~context_impl()’:
/usr/include/relacy/context.hpp:239:9: error: ‘disable_alloc_’ was not declared in this scope
  239 |         disable_alloc_ += 1;
      |         ^~~~~~~~~~~~~~
/usr/include/relacy/context.hpp:241:14: error: ‘thread_id_t’ was not declared in this scope; did you mean ‘thread_info’?
  241 |         for (thread_id_t i = 0; i != thread_count; ++i)
      |              ^~~~~~~~~~~
      |              thread_info
/usr/include/relacy/context.hpp:241:33: error: ‘i’ was not declared in this scope
  241 |         for (thread_id_t i = 0; i != thread_count; ++i)
      |                                 ^
/usr/include/relacy/context.hpp:241:38: error: ‘thread_count’ was not declared in this scope; did you mean ‘sched_count’?
  241 |         for (thread_id_t i = 0; i != thread_count; ++i)
      |                                      ^~~~~~~~~~~~
      |                                      sched_count
/usr/include/relacy/context.hpp:243:26: error: ‘threads_’ was not declared in this scope; did you mean ‘threadi’?
  243 |             delete_fiber(threads_[i].fiber_);
      |                          ^~~~~~~~
      |                          threadi
/usr/include/relacy/context.hpp:246:27: error: ‘main_fiber_’ was not declared in this scope
  246 |         delete_main_fiber(main_fiber_);
      |                           ^~~~~~~~~~~
/usr/include/relacy/context.hpp: In member function ‘virtual void* rl::context_impl<test_t, scheduler_t>::alloc(size_t, bool, int)’:
/usr/include/relacy/context.hpp:279:9: error: ‘disable_alloc_’ was not declared in this scope
  279 |         disable_alloc_ += 1;
      |         ^~~~~~~~~~~~~~
/usr/include/relacy/context.hpp:286:9: error: ‘debug_info’ is not a member of ‘rl’
  286 |         RL_HIST_CTX(memory_alloc_event) {p, size, is_array} RL_HIST_END();
      |         ^~~~~~~~~~~
/usr/include/relacy/context.hpp:286:61: error: ‘rl_info_c’ was not declared in this scope
  286 |         RL_HIST_CTX(memory_alloc_event) {p, size, is_array} RL_HIST_END();
      |                                                             ^~~~~~~~~~~
/usr/include/relacy/context.hpp: In member function ‘virtual void rl::context_impl<test_t, scheduler_t>::free(void*, bool, int)’:
/usr/include/relacy/context.hpp:303:9: error: ‘debug_info’ is not a member of ‘rl’
  303 |         RL_HIST_CTX(memory_free_event) {p, is_array} RL_HIST_END();
      |         ^~~~~~~~~~~
/usr/include/relacy/context.hpp:303:54: error: ‘rl_info_c’ was not declared in this scope
  303 |         RL_HIST_CTX(memory_free_event) {p, is_array} RL_HIST_END();
      |                                                      ^~~~~~~~~~~
/usr/include/relacy/context.hpp:305:79: error: ‘sched_type_mem_realloc’ was not declared in this scope
  305 |         bool const defer = (0 == sched_.rand(this->is_random_sched() ? 4 : 2, sched_type_mem_realloc));
      |                                                                               ^~~~~~~~~~~~~~~~~~~~~~
/usr/include/relacy/context.hpp:309:9: error: ‘disable_alloc_’ was not declared in this scope
  309 |         disable_alloc_ += 1;
      |         ^~~~~~~~~~~~~~
/usr/include/relacy/context.hpp: In member function ‘virtual void* rl::context_impl<test_t, scheduler_t>::alloc(size_t)’:
/usr/include/relacy/context.hpp:320:13: error: ‘disable_alloc_’ was not declared in this scope
  320 |         if (disable_alloc_)
      |             ^~~~~~~~~~~~~~
/usr/include/relacy/context.hpp:324:9: error: ‘disable_alloc_’ was not declared in this scope
  324 |         disable_alloc_ += 1;
      |         ^~~~~~~~~~~~~~
/usr/include/relacy/context.hpp: In member function ‘virtual void rl::context_impl<test_t, scheduler_t>::set_debug_info(int)’:
/usr/include/relacy/context.hpp:343:9: error: ‘last_info_’ was not declared in this scope
  343 |         last_info_ = info;
      |         ^~~~~~~~~~
/usr/include/relacy/context.hpp: In member function ‘virtual void rl::context_impl<test_t, scheduler_t>::free(void*)’:
/usr/include/relacy/context.hpp:348:13: error: ‘disable_alloc_’ was not declared in this scope
  348 |         if (disable_alloc_)
      |             ^~~~~~~~~~~~~~
/usr/include/relacy/context.hpp:354:9: error: ‘disable_alloc_’ was not declared in this scope
  354 |         disable_alloc_ += 1;
      |         ^~~~~~~~~~~~~~
/usr/include/relacy/context.hpp:355:9: error: ‘debug_info’ was not declared in this scope; did you mean ‘set_debug_info’?
  355 |         debug_info const& info = last_info_;
      |         ^~~~~~~~~~
      |         set_debug_info
/usr/include/relacy/context.hpp:356:9: error: ‘debug_info’ is not a member of ‘rl’
  356 |         RL_HIST_CTX(memory_free_event) {p, false} RL_HIST_END();
      |         ^~~~~~~~~~~
/usr/include/relacy/context.hpp:356:51: error: ‘rl_info_c’ was not declared in this scope
  356 |         RL_HIST_CTX(memory_free_event) {p, false} RL_HIST_END();
      |                                                   ^~~~~~~~~~~
/usr/include/relacy/context.hpp:358:79: error: ‘sched_type_mem_realloc’ was not declared in this scope
  358 |         bool const defer = (0 == sched_.rand(this->is_random_sched() ? 4 : 2, sched_type_mem_realloc));
      |                                                                               ^~~~~~~~~~~~~~~~~~~~~~
/usr/include/relacy/context.hpp:363:95: error: ‘info’ was not declared in this scope
  363 |             fail_test("incorrect address passed to free() function", test_result_double_free, info);
      |                                                                                               ^~~~
/usr/include/relacy/context.hpp: In member function ‘virtual void rl::context_impl<test_t, scheduler_t>::unpark_thread(int, bool, int)’:
/usr/include/relacy/context.hpp:395:9: error: ‘debug_info’ is not a member of ‘rl’
  395 |         RL_HIST_CTX(unpark_event) {th} RL_HIST_END();
      |         ^~~~~~~~~~~
/usr/include/relacy/context.hpp:395:40: error: ‘rl_info_c’ was not declared in this scope
  395 |         RL_HIST_CTX(unpark_event) {th} RL_HIST_END();
      |                                        ^~~~~~~~~~~
/usr/include/relacy/context.hpp:399:13: error: ‘threads_’ was not declared in this scope; did you mean ‘threadi’?
  399 |             threads_[th].unpark_reason_ = unpark_reason_normal;
      |             ^~~~~~~~
      |             threadi
/usr/include/relacy/context.hpp:399:43: error: ‘unpark_reason_normal’ was not declared in this scope
  399 |             threads_[th].unpark_reason_ = unpark_reason_normal;
      |                                           ^~~~~~~~~~~~~~~~~~~~
/usr/include/relacy/context.hpp:400:46: error: ‘threadx_’ was not declared in this scope; did you mean ‘threadi’?
  400 |             threads_[th].temp_switch_from_ = threadx_->index_;
      |                                              ^~~~~~~~
      |                                              threadi
/usr/include/relacy/context.hpp: In member function ‘virtual void rl::context_impl<test_t, scheduler_t>::switch_back(int)’:
/usr/include/relacy/context.hpp:409:19: error: ‘threadx_’ was not declared in this scope; did you mean ‘threadi’?
  409 |         RL_VERIFY(threadx_->saved_disable_preemption_ != -1);
      |                   ^~~~~~~~
      |                   threadi
/usr/include/relacy/context.hpp:411:9: error: ‘thread_id_t’ was not declared in this scope; did you mean ‘thread_info’?
  411 |         thread_id_t const tid = threadx_->temp_switch_from_;
      |         ^~~~~~~~~~~
      |         thread_info
/usr/include/relacy/context.hpp:413:25: error: ‘tid’ was not declared in this scope
  413 |         switch_to_fiber(tid);
      |                         ^~~
/usr/include/relacy/context.hpp:415:9: error: ‘disable_preemption_’ was not declared in this scope
  415 |         disable_preemption_ = threadx_->saved_disable_preemption_;
      |         ^~~~~~~~~~~~~~~~~~~
/usr/include/relacy/context.hpp: In member function ‘virtual void rl::context_impl<test_t, scheduler_t>::fail_test(const char*, rl::test_result_e, int)’:
/usr/include/relacy/context.hpp:433:54: error: ‘invariant_executing’ was not declared in this scope
  433 |         if (test_result_user_assert_failed == res && invariant_executing)
      |                                                      ^~~~~~~~~~~~~~~~~~~
/usr/include/relacy/context.hpp:436:13: error: ‘test_result_str_’ was not declared in this scope; did you mean ‘test_result_str’?
  436 |             test_result_str_ = test_result_str(test_result_);
      |             ^~~~~~~~~~~~~~~~
      |             test_result_str
/usr/include/relacy/context.hpp:438:13: error: ‘test_result_str_’ was not declared in this scope; did you mean ‘test_result_str’?
  438 |             test_result_str_ = string(test_result_str(test_result_)) + " (" + desc + ")";
      |             ^~~~~~~~~~~~~~~~
      |             test_result_str
/usr/include/relacy/context.hpp:440:9: error: ‘debug_info’ is not a member of ‘rl’
  440 |         RL_HIST_CTX(user_event) {test_result_str_.c_str()} RL_HIST_END();
      |         ^~~~~~~~~~~
/usr/include/relacy/context.hpp:440:34: error: ‘test_result_str_’ was not declared in this scope; did you mean ‘test_result_str’?
  440 |         RL_HIST_CTX(user_event) {test_result_str_.c_str()} RL_HIST_END();
      |                                  ^~~~~~~~~~~~~~~~
      |                                  test_result_str
/usr/include/relacy/context.hpp:440:60: error: ‘rl_info_c’ was not declared in this scope
  440 |         RL_HIST_CTX(user_event) {test_result_str_.c_str()} RL_HIST_END();
      |                                                            ^~~~~~~~~~~
/usr/include/relacy/context.hpp: In member function ‘virtual void rl::context_impl<test_t, scheduler_t>::rl_until(const char*, int)’:
/usr/include/relacy/context.hpp:447:9: error: ‘debug_info’ is not a member of ‘rl’
  447 |         RL_HIST_CTX(user_event) {desc} RL_HIST_END();
      |         ^~~~~~~~~~~
/usr/include/relacy/context.hpp:447:40: error: ‘rl_info_c’ was not declared in this scope
  447 |         RL_HIST_CTX(user_event) {desc} RL_HIST_END();
      |                                        ^~~~~~~~~~~
/usr/include/relacy/context.hpp: In member function ‘virtual void rl::context_impl<test_t, scheduler_t>::fiber_proc_impl(int)’:
/usr/include/relacy/context.hpp:456:36: error: ‘threads_’ was not declared in this scope; did you mean ‘threadi’?
  456 |         thread_info_base* param = &threads_[thread_index];
      |                                    ^~~~~~~~
      |                                    threadi
/usr/include/relacy/context.hpp:457:9: error: ‘debug_info’ was not declared in this scope; did you mean ‘set_debug_info’?
  457 |         debug_info info = $;
      |         ^~~~~~~~~~
      |         set_debug_info
/usr/include/relacy/context.hpp:464:17: error: ‘debug_info’ is not a member of ‘rl’
  464 |                 RL_HIST_CTX(user_event) {"[CTOR BEGIN]"} RL_HIST_END();
      |                 ^~~~~~~~~~~
/usr/include/relacy/context.hpp:464:58: error: ‘rl_info_c’ was not declared in this scope
  464 |                 RL_HIST_CTX(user_event) {"[CTOR BEGIN]"} RL_HIST_END();
      |                                                          ^~~~~~~~~~~
/usr/include/relacy/context.hpp:466:17: error: ‘debug_info’ is not a member of ‘rl’
  466 |                 RL_HIST_CTX(user_event) {"[CTOR END]"} RL_HIST_END();
      |                 ^~~~~~~~~~~
/usr/include/relacy/context.hpp:466:56: error: ‘rl_info_c’ was not declared in this scope
  466 |                 RL_HIST_CTX(user_event) {"[CTOR END]"} RL_HIST_END();
      |                                                        ^~~~~~~~~~~
/usr/include/relacy/context.hpp:467:17: error: ‘debug_info’ is not a member of ‘rl’
  467 |                 RL_HIST_CTX(user_event) {"[BEFORE BEGIN]"} RL_HIST_END();
      |                 ^~~~~~~~~~~
/usr/include/relacy/context.hpp:467:60: error: ‘rl_info_c’ was not declared in this scope
  467 |                 RL_HIST_CTX(user_event) {"[BEFORE BEGIN]"} RL_HIST_END();
      |                                                            ^~~~~~~~~~~
/usr/include/relacy/context.hpp:469:17: error: ‘debug_info’ is not a member of ‘rl’
  469 |                 RL_HIST_CTX(user_event) {"[BEFORE END]"} RL_HIST_END();
      |                 ^~~~~~~~~~~
/usr/include/relacy/context.hpp:469:58: error: ‘rl_info_c’ was not declared in this scope
  469 |                 RL_HIST_CTX(user_event) {"[BEFORE END]"} RL_HIST_END();
      |                                                          ^~~~~~~~~~~
/usr/include/relacy/context.hpp:471:17: error: ‘invariant_executing’ was not declared in this scope
  471 |                 invariant_executing = true;
      |                 ^~~~~~~~~~~~~~~~~~~
/usr/include/relacy/context.hpp:480:24: error: ‘class rl::thread_info_base’ has no member named ‘index_’
  480 |             if (param->index_ < static_thread_count)
      |                        ^~~~~~
/usr/include/relacy/context.hpp:480:33: error: ‘static_thread_count’ was not declared in this scope
  480 |             if (param->index_ < static_thread_count)
      |                                 ^~~~~~~~~~~~~~~~~~~
/usr/include/relacy/context.hpp:482:51: error: ‘class rl::thread_info_base’ has no member named ‘index_’
  482 |                 current_test_suite->thread(param->index_);
      |                                                   ^~~~~~
/usr/include/relacy/context.hpp:491:13: error: ‘debug_info’ is not a member of ‘rl’
  491 |             RL_HIST_CTX(user_event) {"[THREAD FINISHED]"} RL_HIST_END();
      |             ^~~~~~~~~~~
/usr/include/relacy/context.hpp:491:59: error: ‘rl_info_c’ was not declared in this scope
  491 |             RL_HIST_CTX(user_event) {"[THREAD FINISHED]"} RL_HIST_END();
      |                                                           ^~~~~~~~~~~
/usr/include/relacy/context.hpp:492:23: error: ‘disable_preemption_’ was not declared in this scope
  492 |             RL_VERIFY(disable_preemption_ == 0);
      |                       ^~~~~~~~~~~~~~~~~~~
/usr/include/relacy/context.hpp:493:23: error: ‘threadx_’ was not declared in this scope; did you mean ‘threadi’?
  493 |             RL_VERIFY(threadx_->temp_switch_from_ == -1);
      |                       ^~~~~~~~
      |                       threadi
/usr/include/relacy/context.hpp:507:17: error: ‘invariant_executing’ was not declared in this scope
  507 |                 invariant_executing = true;
      |                 ^~~~~~~~~~~~~~~~~~~
/usr/include/relacy/context.hpp:511:17: error: ‘debug_info’ is not a member of ‘rl’
  511 |                 RL_HIST_CTX(user_event) {"[AFTER BEGIN]"} RL_HIST_END();
      |                 ^~~~~~~~~~~
/usr/include/relacy/context.hpp:511:59: error: ‘rl_info_c’ was not declared in this scope
  511 |                 RL_HIST_CTX(user_event) {"[AFTER BEGIN]"} RL_HIST_END();
      |                                                           ^~~~~~~~~~~
/usr/include/relacy/context.hpp:513:17: error: ‘debug_info’ is not a member of ‘rl’
  513 |                 RL_HIST_CTX(user_event) {"[AFTER END]"} RL_HIST_END();
      |                 ^~~~~~~~~~~
/usr/include/relacy/context.hpp:513:57: error: ‘rl_info_c’ was not declared in this scope
  513 |                 RL_HIST_CTX(user_event) {"[AFTER END]"} RL_HIST_END();
      |                                                         ^~~~~~~~~~~
/usr/include/relacy/context.hpp:514:17: error: ‘debug_info’ is not a member of ‘rl’
  514 |                 RL_HIST_CTX(user_event) {"[DTOR BEGIN]"} RL_HIST_END();
      |                 ^~~~~~~~~~~
/usr/include/relacy/context.hpp:514:58: error: ‘rl_info_c’ was not declared in this scope
  514 |                 RL_HIST_CTX(user_event) {"[DTOR BEGIN]"} RL_HIST_END();
      |                                                          ^~~~~~~~~~~
/usr/include/relacy/context.hpp:516:17: error: ‘debug_info’ is not a member of ‘rl’
  516 |                 RL_HIST_CTX(user_event) {"[DTOR END]"} RL_HIST_END();
      |                 ^~~~~~~~~~~
/usr/include/relacy/context.hpp:516:56: error: ‘rl_info_c’ was not declared in this scope
  516 |                 RL_HIST_CTX(user_event) {"[DTOR END]"} RL_HIST_END();
      |                                                        ^~~~~~~~~~~
/usr/include/relacy/context.hpp:519:98: error: ‘$’ was not declared in this scope
  519 |                 ensure(memory_.iteration_end(), "memory leak detected", test_result_memory_leak, $);
      |                                                                                                  ^
/usr/include/relacy/context.hpp:519:98: note: the macro ‘$’ had not yet been defined
/usr/include/relacy/base.hpp:118: note: it was later defined here
  118 | #define $ RL_INFO
      | 
/usr/include/relacy/context.hpp:520:39: error: request for member ‘iteration_end’ in ‘((rl::context_impl<test_t, scheduler_t>*)this)->rl::context_impl<test_t, scheduler_t>::atomic_alloc_->’, which is of non-class type ‘int’
  520 |                 ensure(atomic_alloc_->iteration_end(), "atomic leak", test_result_resource_leak, $);
      |                                       ^~~~~~~~~~~~~
/usr/include/relacy/context.hpp:521:36: error: request for member ‘iteration_end’ in ‘((rl::context_impl<test_t, scheduler_t>*)this)->rl::context_impl<test_t, scheduler_t>::var_alloc_->’, which is of non-class type ‘int’
  521 |                 ensure(var_alloc_->iteration_end(), "var leak", test_result_resource_leak, $);
      |                                    ^~~~~~~~~~~~~
/usr/include/relacy/context.hpp:522:38: error: request for member ‘iteration_end’ in ‘((rl::context_impl<test_t, scheduler_t>*)this)->rl::context_impl<test_t, scheduler_t>::mutex_alloc_->’, which is of non-class type ‘int’
  522 |                 ensure(mutex_alloc_->iteration_end(), "mutex leak", test_result_resource_leak, $);
      |                                      ^~~~~~~~~~~~~
/usr/include/relacy/context.hpp:523:40: error: request for member ‘iteration_end’ in ‘((rl::context_impl<test_t, scheduler_t>*)this)->rl::context_impl<test_t, scheduler_t>::condvar_alloc_->’, which is of non-class type ‘int’
  523 |                 ensure(condvar_alloc_->iteration_end(), "condition variable leak", test_result_resource_leak, $);
      |                                        ^~~~~~~~~~~~~
/usr/include/relacy/context.hpp:524:37: error: request for member ‘iteration_end’ in ‘((rl::context_impl<test_t, scheduler_t>*)this)->rl::context_impl<test_t, scheduler_t>::sema_alloc_->’, which is of non-class type ‘int’
  524 |                 ensure(sema_alloc_->iteration_end(), "semaphore leak", test_result_resource_leak, $);
      |                                     ^~~~~~~~~~~~~
/usr/include/relacy/context.hpp:525:38: error: request for member ‘iteration_end’ in ‘((rl::context_impl<test_t, scheduler_t>*)this)->rl::context_impl<test_t, scheduler_t>::event_alloc_->’, which is of non-class type ‘int’
  525 |                 ensure(event_alloc_->iteration_end(), "event leak", test_result_resource_leak, $);
      |                                      ^~~~~~~~~~~~~
/usr/include/relacy/context.hpp:531:70: error: ‘info’ was not declared in this scope
  531 |                 fail_test("deadlock detected", test_result_deadlock, info);
      |                                                                      ^~~~
/usr/include/relacy/context.hpp: In member function ‘virtual rl::win_waitable_object* rl::context_impl<test_t, scheduler_t>::create_thread(void* (*)(void*), void*)’:
/usr/include/relacy/context.hpp:543:9: error: ‘thread_id_t’ was not declared in this scope; did you mean ‘thread_info’?
  543 |         thread_id_t id = sched_.create_thread();
      |         ^~~~~~~~~~~
      |         thread_info
/usr/include/relacy/context.hpp:544:9: error: ‘threads_’ was not declared in this scope; did you mean ‘threadi’?
  544 |         threads_[id].dynamic_thread_func_ = fn;
      |         ^~~~~~~~
      |         threadi
/usr/include/relacy/context.hpp:544:18: error: ‘id’ was not declared in this scope; did you mean ‘void’?
  544 |         threads_[id].dynamic_thread_func_ = fn;
      |                  ^~
      |                  void
/usr/include/relacy/context.hpp: In member function ‘virtual void rl::context_impl<test_t, scheduler_t>::yield(unsigned int, int)’:
/usr/include/relacy/context.hpp:553:9: error: ‘debug_info’ is not a member of ‘rl’
  553 |         RL_HIST_CTX(yield_event) {count} RL_HIST_END();
      |         ^~~~~~~~~~~
/usr/include/relacy/context.hpp:553:42: error: ‘rl_info_c’ was not declared in this scope
  553 |         RL_HIST_CTX(yield_event) {count} RL_HIST_END();
      |                                          ^~~~~~~~~~~
/usr/include/relacy/context.hpp:554:30: error: ‘params_’ was not declared in this scope
  554 |         if (sched_count_++ > params_.execution_depth_limit)
      |                              ^~~~~~~
/usr/include/relacy/context.hpp:555:57: error: ‘RL_INFO’ was not declared in this scope
  555 |             fail_test("livelock", test_result_livelock, RL_INFO);
      |                                                         ^~~~~~~
/usr/include/relacy/context.hpp:555:57: note: the macro ‘RL_INFO’ had not yet been defined
/usr/include/relacy/base.hpp:117: note: it was later defined here
  117 | #define RL_INFO ::rl::debug_info(__FUNCTION__, __FILE__, __LINE__)
      | 
/usr/include/relacy/context.hpp: In member function ‘virtual void rl::context_impl<test_t, scheduler_t>::sched()’:
/usr/include/relacy/context.hpp:561:30: error: ‘params_’ was not declared in this scope
  561 |         if (sched_count_++ > params_.execution_depth_limit)
      |                              ^~~~~~~
/usr/include/relacy/context.hpp:562:57: error: ‘RL_INFO’ was not declared in this scope
  562 |             fail_test("livelock", test_result_livelock, RL_INFO);
      |                                                         ^~~~~~~
/usr/include/relacy/context.hpp:562:57: note: the macro ‘RL_INFO’ had not yet been defined
/usr/include/relacy/base.hpp:117: note: it was later defined here
  117 | #define RL_INFO ::rl::debug_info(__FUNCTION__, __FILE__, __LINE__)
      | 
/usr/include/relacy/context.hpp:563:13: error: ‘disable_preemption_’ was not declared in this scope
  563 |         if (disable_preemption_)
      |             ^~~~~~~~~~~~~~~~~~~
/usr/include/relacy/context.hpp: In member function ‘void rl::context_impl<test_t, scheduler_t>::schedule(unsigned int)’:
/usr/include/relacy/context.hpp:570:19: error: ‘threadx_’ was not declared in this scope; did you mean ‘threadi’?
  570 |         RL_VERIFY(threadx_->temp_switch_from_ == -1);
      |                   ^~~~~~~~
      |                   threadi
/usr/include/relacy/context.hpp:571:19: error: ‘disable_preemption_’ was not declared in this scope
  571 |         RL_VERIFY(disable_preemption_ == 0);
      |                   ^~~~~~~~~~~~~~~~~~~
/usr/include/relacy/context.hpp:574:40: error: ‘unpark_reason_normal’ was not declared in this scope
  574 |             threadx_->unpark_reason_ = unpark_reason_normal;
      |                                        ^~~~~~~~~~~~~~~~~~~~
/usr/include/relacy/context.hpp:579:9: error: ‘invariant_executing’ was not declared in this scope
  579 |         invariant_executing = true;
      |         ^~~~~~~~~~~~~~~~~~~
/usr/include/relacy/context.hpp:587:9: error: ‘unpark_reason’ was not declared in this scope
  587 |         unpark_reason reason = unpark_reason_normal;
      |         ^~~~~~~~~~~~~
/usr/include/relacy/context.hpp:588:9: error: ‘thread_id_t’ was not declared in this scope; did you mean ‘thread_info’?
  588 |         thread_id_t const th = sched_.schedule(reason, yield);
      |         ^~~~~~~~~~~
      |         thread_info
/usr/include/relacy/context.hpp:589:9: error: ‘threads_’ was not declared in this scope; did you mean ‘threadi’?
  589 |         threads_[th].unpark_reason_ = reason;
      |         ^~~~~~~~
      |         threadi
/usr/include/relacy/context.hpp:589:18: error: ‘th’ was not declared in this scope; did you mean ‘tm’?
  589 |         threads_[th].unpark_reason_ = reason;
      |                  ^~
      |                  tm
/usr/include/relacy/context.hpp:589:39: error: ‘reason’ was not declared in this scope
  589 |         threads_[th].unpark_reason_ = reason;
      |                                       ^~~~~~
/usr/include/relacy/context.hpp: In member function ‘rl::test_result_e rl::context_impl<test_t, scheduler_t>::simulate(std::ostream&, std::istream&, bool)’:
/usr/include/relacy/context.hpp:599:20: error: ‘start_iteration_’ was not declared in this scope
  599 |             sss >> start_iteration_;
      |                    ^~~~~~~~~~~~~~~~
/usr/include/relacy/context.hpp:605:52: error: ‘params_’ was not declared in this scope
  605 |         if (test_result_success != res && false == params_.collect_history)
      |                                                    ^~~~~~~
/usr/include/relacy/context.hpp: In member function ‘rl::test_result_e rl::context_impl<test_t, scheduler_t>::simulate2(bool)’:
/usr/include/relacy/context.hpp:616:9: error: ‘debug_info’ was not declared in this scope; did you mean ‘set_debug_info’?
  616 |         debug_info info = $;
      |         ^~~~~~~~~~
      |         set_debug_info
/usr/include/relacy/context.hpp:618:9: error: ‘current_iter_’ was not declared in this scope
  618 |         current_iter_ = start_iteration_;
      |         ^~~~~~~~~~~~~
/usr/include/relacy/context.hpp:618:25: error: ‘start_iteration_’ was not declared in this scope
  618 |         current_iter_ = start_iteration_;
      |                         ^~~~~~~~~~~~~~~~
/usr/include/relacy/context.hpp:627:17: error: ‘params_’ was not declared in this scope
  627 |                 params_.test_result = test_result_;
      |                 ^~~~~~~
/usr/include/relacy/context.hpp:641:13: error: ‘debug_info’ is not a member of ‘rl’
  641 |             RL_HIST_CTX(user_event) {"ITERATION END"} RL_HIST_END();
      |             ^~~~~~~~~~~
/usr/include/relacy/context.hpp:641:55: error: ‘rl_info_c’ was not declared in this scope
  641 |             RL_HIST_CTX(user_event) {"ITERATION END"} RL_HIST_END();
      |                                                       ^~~~~~~~~~~
/usr/include/relacy/context.hpp:647:9: error: ‘params_’ was not declared in this scope
  647 |         params_.test_result = test_result_success;
      |         ^~~~~~~
/usr/include/relacy/context.hpp: In member function ‘void rl::context_impl<test_t, scheduler_t>::iteration(int)’:
/usr/include/relacy/context.hpp:669:9: error: ‘disable_preemption_’ was not declared in this scope
  669 |         disable_preemption_ = 0;
      |         ^~~~~~~~~~~~~~~~~~~
/usr/include/relacy/context.hpp:672:9: error: ‘foreach’ was not declared in this scope
  672 |         foreach<thread_count>(
      |         ^~~~~~~
/usr/include/relacy/context.hpp:672:17: error: ‘thread_count’ was not declared in this scope; did you mean ‘sched_count’?
  672 |         foreach<thread_count>(
      |                 ^~~~~~~~~~~~
      |                 sched_count
/usr/include/relacy/context.hpp:673:13: error: ‘threads_’ was not declared in this scope; did you mean ‘threadi’?
  673 |             threads_,
      |             ^~~~~~~~
      |             threadi
/usr/include/relacy/context.hpp:677:13: error: ‘seq_cst_fence_order_’ was not declared in this scope
  677 |             seq_cst_fence_order_,
      |             ^~~~~~~~~~~~~~~~~~~~
/usr/include/relacy/context.hpp:678:14: error: ‘assign_zero’ was not declared in this scope
  678 |             &assign_zero);
      |              ^~~~~~~~~~~
/usr/include/relacy/context.hpp:680:32: error: qualified-id in declaration before ‘(’ token
  680 |         base_t::iteration_begin();
      |                                ^
/usr/include/relacy/context.hpp:682:14: error: ‘thread_id_t’ was not declared in this scope; did you mean ‘thread_info’?
  682 |         for (thread_id_t i = 0; i != thread_count; ++i)
      |              ^~~~~~~~~~~
      |              thread_info
/usr/include/relacy/context.hpp:682:33: error: ‘i’ was not declared in this scope
  682 |         for (thread_id_t i = 0; i != thread_count; ++i)
      |                                 ^
/usr/include/relacy/context.hpp:687:9: error: ‘disable_alloc_’ was not declared in this scope
  687 |         disable_alloc_ += 1;
      |         ^~~~~~~~~~~~~~
/usr/include/relacy/context.hpp:688:9: error: ‘thread_id_t’ was not declared in this scope; did you mean ‘thread_info’?
  688 |         thread_id_t const th = sched_.iteration_begin(iter);
      |         ^~~~~~~~~~~
      |         thread_info
/usr/include/relacy/context.hpp:690:25: error: ‘th’ was not declared in this scope; did you mean ‘tm’?
  690 |         switch_to_fiber(th);
      |                         ^~
      |                         tm
/usr/include/relacy/context.hpp:692:25: error: ‘progress_probe_period’ was not declared in this scope
  692 |         if (0 == iter % progress_probe_period)
      |                         ^~~~~~~~~~~~~~~~~~~~~
/usr/include/relacy/context.hpp: In member function ‘void rl::context_impl<test_t, scheduler_t>::switch_to_fiber(int)’:
/usr/include/relacy/context.hpp:701:9: error: ‘fiber_t’ was not declared in this scope; did you mean ‘timer_t’?
  701 |         fiber_t& prev = threadx_ ? threadx_->fiber_ : main_fiber_;
      |         ^~~~~~~
      |         timer_t
/usr/include/relacy/context.hpp:701:18: error: ‘prev’ was not declared in this scope
  701 |         fiber_t& prev = threadx_ ? threadx_->fiber_ : main_fiber_;
      |                  ^~~~
/usr/include/relacy/context.hpp:701:25: error: ‘threadx_’ was not declared in this scope; did you mean ‘threadi’?
  701 |         fiber_t& prev = threadx_ ? threadx_->fiber_ : main_fiber_;
      |                         ^~~~~~~~
      |                         threadi
/usr/include/relacy/context.hpp:701:55: error: ‘main_fiber_’ was not declared in this scope
  701 |         fiber_t& prev = threadx_ ? threadx_->fiber_ : main_fiber_;
      |                                                       ^~~~~~~~~~~
/usr/include/relacy/context.hpp:702:21: error: ‘threads_’ was not declared in this scope; did you mean ‘threadi’?
  702 |         threadx_ = &threads_[th];
      |                     ^~~~~~~~
      |                     threadi
/usr/include/relacy/context.hpp:703:11: error: ‘::switch_to_fiber’ has not been declared
  703 |         ::switch_to_fiber(threadx_->fiber_, prev);
      |           ^~~~~~~~~~~~~~~
/usr/include/relacy/context.hpp: In member function ‘void rl::context_impl<test_t, scheduler_t>::switch_to_main_fiber()’:
/usr/include/relacy/context.hpp:708:9: error: ‘fiber_t’ was not declared in this scope; did you mean ‘timer_t’?
  708 |         fiber_t& prev = threadx_->fiber_;
      |         ^~~~~~~
      |         timer_t
/usr/include/relacy/context.hpp:708:18: error: ‘prev’ was not declared in this scope
  708 |         fiber_t& prev = threadx_->fiber_;
      |                  ^~~~
/usr/include/relacy/context.hpp:708:25: error: ‘threadx_’ was not declared in this scope; did you mean ‘threadi’?
  708 |         fiber_t& prev = threadx_->fiber_;
      |                         ^~~~~~~~
      |                         threadi
/usr/include/relacy/context.hpp:710:11: error: ‘::switch_to_fiber’ has not been declared
  710 |         ::switch_to_fiber(main_fiber_, prev);
      |           ^~~~~~~~~~~~~~~
/usr/include/relacy/context.hpp:710:27: error: ‘main_fiber_’ was not declared in this scope
  710 |         ::switch_to_fiber(main_fiber_, prev);
      |                           ^~~~~~~~~~~
/usr/include/relacy/context.hpp: In member function ‘void rl::context_impl<test_t, scheduler_t>::output_progress(int)’:
/usr/include/relacy/context.hpp:715:9: error: ‘iteration_t’ was not declared in this scope; did you mean ‘iteration’?
  715 |         iteration_t const total = sched_.iteration_count();
      |         ^~~~~~~~~~~
      |         iteration
/usr/include/relacy/context.hpp:717:26: error: ‘progress_probe_period’ was not declared in this scope
  717 |         if (0 == iter % (progress_probe_period * 16))
      |                          ^~~~~~~~~~~~~~~~~~~~~
/usr/include/relacy/context.hpp:719:13: error: ‘disable_alloc_’ was not declared in this scope
  719 |             disable_alloc_ += 1;
      |             ^~~~~~~~~~~~~~
/usr/include/relacy/context.hpp:720:14: error: ‘params_’ was not declared in this scope
  720 |             *params_.progress_stream << iter * 100 / total << "% ("
      |              ^~~~~~~
/usr/include/relacy/context.hpp:720:54: error: ‘total’ was not declared in this scope
  720 |             *params_.progress_stream << iter * 100 / total << "% ("
      |                                                      ^~~~~
/usr/include/relacy/context.hpp:721:56: error: ‘endl’ is not a member of ‘std’
  721 |                 << iter << "/" << total << ")" << std::endl;
      |                                                        ^~~~
/usr/include/relacy/context.hpp:31:1: note: ‘std::endl’ is defined in header ‘<ostream>’; did you forget to ‘#include <ostream>’?
   30 | #include "context_bound_scheduler.hpp"
  +++ |+#include <ostream>
   31 | 
/usr/include/relacy/context.hpp: In member function ‘void rl::context_impl<test_t, scheduler_t>::output_history()’:
/usr/include/relacy/context.hpp:733:22: error: ‘params_’ was not declared in this scope
  733 |         if (false == params_.output_history)
      |                      ^~~~~~~
/usr/include/relacy/context.hpp:735:39: error: ‘test_result_str_’ was not declared in this scope; did you mean ‘test_result_str’?
  735 |             *params_.output_stream << test_result_str_ << std::endl;
      |                                       ^~~~~~~~~~~~~~~~
      |                                       test_result_str
/usr/include/relacy/context.hpp:735:64: error: ‘endl’ is not a member of ‘std’
  735 |             *params_.output_stream << test_result_str_ << std::endl;
      |                                                                ^~~~
/usr/include/relacy/context.hpp:735:64: note: ‘std::endl’ is defined in header ‘<ostream>’; did you forget to ‘#include <ostream>’?
/usr/include/relacy/context.hpp:736:87: error: ‘endl’ is not a member of ‘std’
  736 |             *params_.output_stream << "iteration: " << params_.stop_iteration << std::endl;
      |                                                                                       ^~~~
/usr/include/relacy/context.hpp:736:87: note: ‘std::endl’ is defined in header ‘<ostream>’; did you forget to ‘#include <ostream>’?
/usr/include/relacy/context.hpp:737:44: error: ‘endl’ is not a member of ‘std’
  737 |             *params_.output_stream << std::endl;
      |                                            ^~~~
/usr/include/relacy/context.hpp:737:44: note: ‘std::endl’ is defined in header ‘<ostream>’; did you forget to ‘#include <ostream>’?
/usr/include/relacy/context.hpp:739:9: error: ‘history_’ was not declared in this scope; did you mean ‘history_mgr’?
  739 |         history_.print_exec_history(params_.output_history);
      |         ^~~~~~~~
      |         history_mgr
/usr/include/relacy/context.hpp:739:37: error: ‘params_’ was not declared in this scope
  739 |         history_.print_exec_history(params_.output_history);
      |                                     ^~~~~~~
/usr/include/relacy/context.hpp:750:31: error: request for member ‘iteration_end’ in ‘((rl::context_impl<test_t, scheduler_t>*)this)->rl::context_impl<test_t, scheduler_t>::atomic_alloc_->’, which is of non-class type ‘int’
  750 |             && atomic_alloc_->iteration_end() == false)
      |                               ^~~~~~~~~~~~~
/usr/include/relacy/context.hpp:752:65: error: ‘endl’ is not a member of ‘std’
  752 |             *params_.output_stream << "leaked atomics:" << std::endl;
      |                                                                 ^~~~
/usr/include/relacy/context.hpp:752:65: note: ‘std::endl’ is defined in header ‘<ostream>’; did you forget to ‘#include <ostream>’?
/usr/include/relacy/context.hpp:753:28: error: request for member ‘output_allocs’ in ‘((rl::context_impl<test_t, scheduler_t>*)this)->rl::context_impl<test_t, scheduler_t>::atomic_alloc_->’, which is of non-class type ‘int’
  753 |             atomic_alloc_->output_allocs(*params_.output_stream);
      |                            ^~~~~~~~~~~~~
/usr/include/relacy/context.hpp: In member function ‘void rl::context_impl<test_t, scheduler_t>::rl_global_fence()’:
/usr/include/relacy/context.hpp:759:9: error: ‘timestamp_t’ was not declared in this scope
  759 |         timestamp_t max_acq_rel = 0;
      |         ^~~~~~~~~~~
/usr/include/relacy/context.hpp:760:14: error: ‘thread_id_t’ was not declared in this scope; did you mean ‘thread_info’?
  760 |         for (thread_id_t i = 0; i != thread_count; ++i)
      |              ^~~~~~~~~~~
      |              thread_info
/usr/include/relacy/context.hpp:760:33: error: ‘i’ was not declared in this scope
  760 |         for (thread_id_t i = 0; i != thread_count; ++i)
      |                                 ^
/usr/include/relacy/context.hpp:760:38: error: ‘thread_count’ was not declared in this scope; did you mean ‘sched_count’?
  760 |         for (thread_id_t i = 0; i != thread_count; ++i)
      |                                      ^~~~~~~~~~~~
      |                                      sched_count
/usr/include/relacy/context.hpp:762:17: error: ‘threads_’ was not declared in this scope; did you mean ‘threadi’?
  762 |             if (threads_[i].acq_rel_order_[i] > max_acq_rel)
      |                 ^~~~~~~~
      |                 threadi
/usr/include/relacy/context.hpp:762:49: error: ‘max_acq_rel’ was not declared in this scope; did you mean ‘mo_acq_rel’?
  762 |             if (threads_[i].acq_rel_order_[i] > max_acq_rel)
      |                                                 ^~~~~~~~~~~
      |                                                 mo_acq_rel
/usr/include/relacy/context.hpp:766:14: error: ‘thread_id_t’ was not declared in this scope; did you mean ‘thread_info’?
  766 |         for (thread_id_t i = 0; i != thread_count; ++i)
      |              ^~~~~~~~~~~
      |              thread_info
/usr/include/relacy/context.hpp:766:33: error: ‘i’ was not declared in this scope
  766 |         for (thread_id_t i = 0; i != thread_count; ++i)
      |                                 ^
/usr/include/relacy/context.hpp:766:38: error: ‘thread_count’ was not declared in this scope; did you mean ‘sched_count’?
  766 |         for (thread_id_t i = 0; i != thread_count; ++i)
      |                                      ^~~~~~~~~~~~
      |                                      sched_count
/usr/include/relacy/context.hpp:768:30: error: expected ‘;’ before ‘j’
  768 |             for (thread_id_t j = 0; j != thread_count; ++j)
      |                              ^
/usr/include/relacy/context.hpp:768:37: error: ‘j’ was not declared in this scope
  768 |             for (thread_id_t j = 0; j != thread_count; ++j)
      |                                     ^
/usr/include/relacy/context.hpp:770:17: error: ‘threads_’ was not declared in this scope; did you mean ‘threadi’?
  770 |                 threads_[i].acq_rel_order_[j] = max_acq_rel;
      |                 ^~~~~~~~
      |                 threadi
/usr/include/relacy/context.hpp:770:49: error: ‘max_acq_rel’ was not declared in this scope; did you mean ‘mo_acq_rel’?
  770 |                 threads_[i].acq_rel_order_[j] = max_acq_rel;
      |                                                 ^~~~~~~~~~~
      |                                                 mo_acq_rel
/usr/include/relacy/context.hpp: In member function ‘virtual void rl::context_impl<test_t, scheduler_t>::atomic_thread_fence_seq_cst()’:
/usr/include/relacy/context.hpp:793:47: error: ‘seq_cst_fence_order_’ was not declared in this scope
  793 |         threadi().atomic_thread_fence_seq_cst(seq_cst_fence_order_);
      |                                               ^~~~~~~~~~~~~~~~~~~~
/usr/include/relacy/context.hpp: In member function ‘virtual rl::generic_mutex_data* rl::context_impl<test_t, scheduler_t>::mutex_ctor(bool, bool, bool, bool)’:
/usr/include/relacy/context.hpp:803:35: error: request for member ‘alloc’ in ‘((rl::context_impl<test_t, scheduler_t>*)this)->rl::context_impl<test_t, scheduler_t>::mutex_alloc_->’, which is of non-class type ‘int’
  803 |         return new (mutex_alloc_->alloc()) generic_mutex_data_impl<thread_count>(is_rw, is_exclusive_recursive, is_shared_recursive, failing_try_lock);
      |                                   ^~~~~
/usr/include/relacy/context.hpp:803:68: error: ‘thread_count’ was not declared in this scope; did you mean ‘sched_count’?
  803 |         return new (mutex_alloc_->alloc()) generic_mutex_data_impl<thread_count>(is_rw, is_exclusive_recursive, is_shared_recursive, failing_try_lock);
      |                                                                    ^~~~~~~~~~~~
      |                                                                    sched_count
/usr/include/relacy/context.hpp:803:80: error: template argument 1 is invalid
  803 |         return new (mutex_alloc_->alloc()) generic_mutex_data_impl<thread_count>(is_rw, is_exclusive_recursive, is_shared_recursive, failing_try_lock);
      |                                                                                ^
/usr/include/relacy/context.hpp: In member function ‘virtual void rl::context_impl<test_t, scheduler_t>::mutex_dtor(rl::generic_mutex_data*)’:
/usr/include/relacy/context.hpp:808:33: error: ‘thread_count’ was not declared in this scope; did you mean ‘sched_count’?
  808 |         generic_mutex_data_impl<thread_count>* mm = static_cast<generic_mutex_data_impl<thread_count>*>(m);
      |                                 ^~~~~~~~~~~~
      |                                 sched_count
/usr/include/relacy/context.hpp:808:45: error: template argument 1 is invalid
  808 |         generic_mutex_data_impl<thread_count>* mm = static_cast<generic_mutex_data_impl<thread_count>*>(m);
      |                                             ^
/usr/include/relacy/context.hpp:808:102: error: expected ‘>’ before ‘*’ token
  808 |         generic_mutex_data_impl<thread_count>* mm = static_cast<generic_mutex_data_impl<thread_count>*>(m);
      |                                                                                                      ^
/usr/include/relacy/context.hpp:808:102: error: expected ‘(’ before ‘*’ token
/usr/include/relacy/context.hpp:808:103: error: expected primary-expression before ‘>’ token
  808 |         generic_mutex_data_impl<thread_count>* mm = static_cast<generic_mutex_data_impl<thread_count>*>(m);
      |                                                                                                       ^
/usr/include/relacy/context.hpp:808:107: error: expected ‘)’ before ‘;’ token
  808 |         generic_mutex_data_impl<thread_count>* mm = static_cast<generic_mutex_data_impl<thread_count>*>(m);
      |                                                                                                           ^
/usr/include/relacy/context.hpp:810:23: error: request for member ‘free’ in ‘((rl::context_impl<test_t, scheduler_t>*)this)->rl::context_impl<test_t, scheduler_t>::mutex_alloc_->’, which is of non-class type ‘int’
  810 |         mutex_alloc_->free(mm);
      |                       ^~~~
/usr/include/relacy/context.hpp: In member function ‘virtual rl::condvar_data* rl::context_impl<test_t, scheduler_t>::condvar_ctor(bool)’:
/usr/include/relacy/context.hpp:815:37: error: request for member ‘alloc’ in ‘((rl::context_impl<test_t, scheduler_t>*)this)->rl::context_impl<test_t, scheduler_t>::condvar_alloc_->’, which is of non-class type ‘int’
  815 |         return new (condvar_alloc_->alloc()) condvar_data_impl<thread_count>(allow_spurious_wakeups);
      |                                     ^~~~~
/usr/include/relacy/context.hpp:815:64: error: ‘thread_count’ was not declared in this scope; did you mean ‘sched_count’?
  815 |         return new (condvar_alloc_->alloc()) condvar_data_impl<thread_count>(allow_spurious_wakeups);
      |                                                                ^~~~~~~~~~~~
      |                                                                sched_count
/usr/include/relacy/context.hpp:815:76: error: template argument 1 is invalid
  815 |         return new (condvar_alloc_->alloc()) condvar_data_impl<thread_count>(allow_spurious_wakeups);
      |                                                                            ^
/usr/include/relacy/context.hpp: In member function ‘virtual void rl::context_impl<test_t, scheduler_t>::condvar_dtor(rl::condvar_data*)’:
/usr/include/relacy/context.hpp:820:27: error: ‘thread_count’ was not declared in this scope; did you mean ‘sched_count’?
  820 |         condvar_data_impl<thread_count>* mm = static_cast<condvar_data_impl<thread_count>*>(cv);
      |                           ^~~~~~~~~~~~
      |                           sched_count
/usr/include/relacy/context.hpp:820:39: error: template argument 1 is invalid
  820 |         condvar_data_impl<thread_count>* mm = static_cast<condvar_data_impl<thread_count>*>(cv);
      |                                       ^
/usr/include/relacy/context.hpp:820:90: error: expected ‘>’ before ‘*’ token
  820 |         condvar_data_impl<thread_count>* mm = static_cast<condvar_data_impl<thread_count>*>(cv);
      |                                                                                          ^
/usr/include/relacy/context.hpp:820:90: error: expected ‘(’ before ‘*’ token
/usr/include/relacy/context.hpp:820:91: error: expected primary-expression before ‘>’ token
  820 |         condvar_data_impl<thread_count>* mm = static_cast<condvar_data_impl<thread_count>*>(cv);
      |                                                                                           ^
/usr/include/relacy/context.hpp:820:96: error: expected ‘)’ before ‘;’ token
  820 |         condvar_data_impl<thread_count>* mm = static_cast<condvar_data_impl<thread_count>*>(cv);
      |                                                                                                ^
/usr/include/relacy/context.hpp:822:25: error: request for member ‘free’ in ‘((rl::context_impl<test_t, scheduler_t>*)this)->rl::context_impl<test_t, scheduler_t>::condvar_alloc_->’, which is of non-class type ‘int’
  822 |         condvar_alloc_->free(mm);
      |                         ^~~~
/usr/include/relacy/context.hpp: In member function ‘virtual rl::sema_data* rl::context_impl<test_t, scheduler_t>::sema_ctor(bool, unsigned int, unsigned int)’:
/usr/include/relacy/context.hpp:827:34: error: request for member ‘alloc’ in ‘((rl::context_impl<test_t, scheduler_t>*)this)->rl::context_impl<test_t, scheduler_t>::sema_alloc_->’, which is of non-class type ‘int’
  827 |         return new (sema_alloc_->alloc()) sema_data_impl<thread_count>(spurious_wakeups, initial_count, max_count);
      |                                  ^~~~~
/usr/include/relacy/context.hpp:827:58: error: ‘thread_count’ was not declared in this scope; did you mean ‘sched_count’?
  827 |         return new (sema_alloc_->alloc()) sema_data_impl<thread_count>(spurious_wakeups, initial_count, max_count);
      |                                                          ^~~~~~~~~~~~
      |                                                          sched_count
/usr/include/relacy/context.hpp:827:70: error: template argument 1 is invalid
  827 |         return new (sema_alloc_->alloc()) sema_data_impl<thread_count>(spurious_wakeups, initial_count, max_count);
      |                                                                      ^
/usr/include/relacy/context.hpp: In member function ‘virtual void rl::context_impl<test_t, scheduler_t>::sema_dtor(rl::sema_data*)’:
/usr/include/relacy/context.hpp:832:24: error: ‘thread_count’ was not declared in this scope; did you mean ‘sched_count’?
  832 |         sema_data_impl<thread_count>* mm = static_cast<sema_data_impl<thread_count>*>(cv);
      |                        ^~~~~~~~~~~~
      |                        sched_count
/usr/include/relacy/context.hpp:832:36: error: template argument 1 is invalid
  832 |         sema_data_impl<thread_count>* mm = static_cast<sema_data_impl<thread_count>*>(cv);
      |                                    ^
/usr/include/relacy/context.hpp:832:84: error: expected ‘>’ before ‘*’ token
  832 |         sema_data_impl<thread_count>* mm = static_cast<sema_data_impl<thread_count>*>(cv);
      |                                                                                    ^
/usr/include/relacy/context.hpp:832:84: error: expected ‘(’ before ‘*’ token
/usr/include/relacy/context.hpp:832:85: error: expected primary-expression before ‘>’ token
  832 |         sema_data_impl<thread_count>* mm = static_cast<sema_data_impl<thread_count>*>(cv);
      |                                                                                     ^
/usr/include/relacy/context.hpp:832:90: error: expected ‘)’ before ‘;’ token
  832 |         sema_data_impl<thread_count>* mm = static_cast<sema_data_impl<thread_count>*>(cv);
      |                                                                                          ^
/usr/include/relacy/context.hpp:834:22: error: request for member ‘free’ in ‘((rl::context_impl<test_t, scheduler_t>*)this)->rl::context_impl<test_t, scheduler_t>::sema_alloc_->’, which is of non-class type ‘int’
  834 |         sema_alloc_->free(mm);
      |                      ^~~~
/usr/include/relacy/context.hpp: In member function ‘virtual rl::event_data* rl::context_impl<test_t, scheduler_t>::event_ctor(bool, bool)’:
/usr/include/relacy/context.hpp:839:35: error: request for member ‘alloc’ in ‘((rl::context_impl<test_t, scheduler_t>*)this)->rl::context_impl<test_t, scheduler_t>::event_alloc_->’, which is of non-class type ‘int’
  839 |         return new (event_alloc_->alloc()) event_data_impl<thread_count>(manual_reset, initial_state);
      |                                   ^~~~~
/usr/include/relacy/context.hpp:839:60: error: ‘thread_count’ was not declared in this scope; did you mean ‘sched_count’?
  839 |         return new (event_alloc_->alloc()) event_data_impl<thread_count>(manual_reset, initial_state);
      |                                                            ^~~~~~~~~~~~
      |                                                            sched_count
/usr/include/relacy/context.hpp:839:72: error: template argument 1 is invalid
  839 |         return new (event_alloc_->alloc()) event_data_impl<thread_count>(manual_reset, initial_state);
      |                                                                        ^
/usr/include/relacy/context.hpp: In member function ‘virtual void rl::context_impl<test_t, scheduler_t>::event_dtor(rl::event_data*)’:
/usr/include/relacy/context.hpp:844:25: error: ‘thread_count’ was not declared in this scope; did you mean ‘sched_count’?
  844 |         event_data_impl<thread_count>* mm = static_cast<event_data_impl<thread_count>*>(cv);
      |                         ^~~~~~~~~~~~
      |                         sched_count
/usr/include/relacy/context.hpp:844:37: error: template argument 1 is invalid
  844 |         event_data_impl<thread_count>* mm = static_cast<event_data_impl<thread_count>*>(cv);
      |                                     ^
/usr/include/relacy/context.hpp:844:86: error: expected ‘>’ before ‘*’ token
  844 |         event_data_impl<thread_count>* mm = static_cast<event_data_impl<thread_count>*>(cv);
      |                                                                                      ^
/usr/include/relacy/context.hpp:844:86: error: expected ‘(’ before ‘*’ token
/usr/include/relacy/context.hpp:844:87: error: expected primary-expression before ‘>’ token
  844 |         event_data_impl<thread_count>* mm = static_cast<event_data_impl<thread_count>*>(cv);
      |                                                                                       ^
/usr/include/relacy/context.hpp:844:92: error: expected ‘)’ before ‘;’ token
  844 |         event_data_impl<thread_count>* mm = static_cast<event_data_impl<thread_count>*>(cv);
      |                                                                                            ^
/usr/include/relacy/context.hpp:846:23: error: request for member ‘free’ in ‘((rl::context_impl<test_t, scheduler_t>*)this)->rl::context_impl<test_t, scheduler_t>::event_alloc_->’, which is of non-class type ‘int’
  846 |         event_alloc_->free(mm);
      |                       ^~~~
/usr/include/relacy/context.hpp: In function ‘rl::test_result_e rl::run_test(test_params&, std::ostream&, bool)’:
/usr/include/relacy/context.hpp:903:9: error: ‘istringstream’ was not declared in this scope; did you mean ‘std::istringstream’?
  903 |         istringstream iss (params.initial_state);
      |         ^~~~~~~~~~~~~
      |         std::istringstream
In file included from /usr/include/c++/12/ios:38:
/usr/include/c++/12/iosfwd:150:41: note: ‘std::istringstream’ declared here
  150 |   typedef basic_istringstream<char>     istringstream;
      |                                         ^~~~~~~~~~~~~
/usr/include/relacy/context.hpp:904:53: error: ‘iss’ was not declared in this scope; did you mean ‘oss’?
  904 |         res = context_t(params, sctx).simulate(oss, iss, second);
      |                                                     ^~~
      |                                                     oss
/usr/include/relacy/context.hpp: In function ‘bool rl::simulate(test_params&)’:
/usr/include/relacy/context.hpp:949:12: error: ‘struct rl::test_params’ has no member named ‘test_name’; did you mean ‘test_params’?
  949 |     params.test_name = test_name;
      |            ^~~~~~~~~
      |            test_params
/usr/include/relacy/context.hpp:950:37: error: ‘struct rl::test_params’ has no member named ‘test_name’; did you mean ‘test_params’?
  950 |     *params.output_stream << params.test_name << std::endl;
      |                                     ^~~~~~~~~
      |                                     test_params
/usr/include/relacy/context.hpp:950:55: error: ‘endl’ is not a member of ‘std’
  950 |     *params.output_stream << params.test_name << std::endl;
      |                                                       ^~~~
/usr/include/relacy/context.hpp:950:55: note: ‘std::endl’ is defined in header ‘<ostream>’; did you forget to ‘#include <ostream>’?
/usr/include/relacy/context.hpp:956:5: error: ‘ostringstream’ was not declared in this scope; did you mean ‘std::ostringstream’?
  956 |     ostringstream oss;
      |     ^~~~~~~~~~~~~
      |     std::ostringstream
/usr/include/c++/12/iosfwd:153:41: note: ‘std::ostringstream’ declared here
  153 |   typedef basic_ostringstream<char>     ostringstream;
      |                                         ^~~~~~~~~~~~~
/usr/include/relacy/context.hpp:960:89: error: ‘oss’ was not declared in this scope
  960 |         res = run_test<test_t, random_scheduler<test_t::params::thread_count> >(params, oss, false);
      |                                                                                         ^~~
/usr/include/relacy/context.hpp:962:94: error: ‘oss’ was not declared in this scope
  962 |         res = run_test<test_t, full_search_scheduler<test_t::params::thread_count> >(params, oss, false);
      |                                                                                              ^~~
/usr/include/relacy/context.hpp:964:96: error: ‘oss’ was not declared in this scope
  964 |         res = run_test<test_t, context_bound_scheduler<test_t::params::thread_count> >(params, oss, false);
      |                                                                                                ^~~
/usr/include/relacy/context.hpp:974:31: error: no match for ‘operator<<’ (operand types are ‘std::ostream’ {aka ‘std::basic_ostream<char>’} and ‘const char [13]’)
  974 |         *params.output_stream << "iterations: " << params.stop_iteration << std::endl;
      |         ~~~~~~~~~~~~~~~~~~~~~ ^~ ~~~~~~~~~~~~~~
      |         |                        |
      |         |                        const char [13]
      |         std::ostream {aka std::basic_ostream<char>}
/usr/include/relacy/history.hpp:76:22: note: candidate: ‘std::ostream& rl::operator<<(std::ostream&, int)’ (near match)
   76 | inline std::ostream& operator << (std::ostream& ss, debug_info_param info)
      |                      ^~~~~~~~
/usr/include/relacy/history.hpp:76:22: note:   conversion of argument 2 would be ill-formed:
/usr/include/relacy/context.hpp:974:59: error: ‘struct rl::test_params’ has no member named ‘stop_iteration’
  974 |         *params.output_stream << "iterations: " << params.stop_iteration << std::endl;
      |                                                           ^~~~~~~~~~~~~~
/usr/include/relacy/context.hpp:974:82: error: ‘endl’ is not a member of ‘std’
  974 |         *params.output_stream << "iterations: " << params.stop_iteration << std::endl;
      |                                                                                  ^~~~
/usr/include/relacy/context.hpp:974:82: note: ‘std::endl’ is defined in header ‘<ostream>’; did you forget to ‘#include <ostream>’?
/usr/include/relacy/context.hpp:975:31: error: no match for ‘operator<<’ (operand types are ‘std::ostream’ {aka ‘std::basic_ostream<char>’} and ‘const char [13]’)
  975 |         *params.output_stream << "total time: " << t << std::endl;
      |         ~~~~~~~~~~~~~~~~~~~~~ ^~ ~~~~~~~~~~~~~~
      |         |                        |
      |         |                        const char [13]
      |         std::ostream {aka std::basic_ostream<char>}
/usr/include/relacy/history.hpp:76:22: note: candidate: ‘std::ostream& rl::operator<<(std::ostream&, int)’ (near match)
   76 | inline std::ostream& operator << (std::ostream& ss, debug_info_param info)
      |                      ^~~~~~~~
/usr/include/relacy/history.hpp:76:22: note:   conversion of argument 2 would be ill-formed:
/usr/include/relacy/context.hpp:975:62: error: ‘endl’ is not a member of ‘std’
  975 |         *params.output_stream << "total time: " << t << std::endl;
      |                                                              ^~~~
/usr/include/relacy/context.hpp:975:62: note: ‘std::endl’ is defined in header ‘<ostream>’; did you forget to ‘#include <ostream>’?
/usr/include/relacy/context.hpp:976:31: error: no match for ‘operator<<’ (operand types are ‘std::ostream’ {aka ‘std::basic_ostream<char>’} and ‘const char [13]’)
  976 |         *params.output_stream << "throughput: " << (uint64_t)params.stop_iteration * 1000 / t << std::endl;
      |         ~~~~~~~~~~~~~~~~~~~~~ ^~ ~~~~~~~~~~~~~~
      |         |                        |
      |         |                        const char [13]
      |         std::ostream {aka std::basic_ostream<char>}
/usr/include/relacy/history.hpp:76:22: note: candidate: ‘std::ostream& rl::operator<<(std::ostream&, int)’ (near match)
   76 | inline std::ostream& operator << (std::ostream& ss, debug_info_param info)
      |                      ^~~~~~~~
/usr/include/relacy/history.hpp:76:22: note:   conversion of argument 2 would be ill-formed:
/usr/include/relacy/context.hpp:976:69: error: ‘struct rl::test_params’ has no member named ‘stop_iteration’
  976 |         *params.output_stream << "throughput: " << (uint64_t)params.stop_iteration * 1000 / t << std::endl;
      |                                                                     ^~~~~~~~~~~~~~
/usr/include/relacy/context.hpp:976:103: error: ‘endl’ is not a member of ‘std’
  976 |         *params.output_stream << "throughput: " << (uint64_t)params.stop_iteration * 1000 / t << std::endl;
      |                                                                                                       ^~~~
/usr/include/relacy/context.hpp:976:103: note: ‘std::endl’ is defined in header ‘<ostream>’; did you forget to ‘#include <ostream>’?
/usr/include/relacy/context.hpp:977:39: error: ‘endl’ is not a member of ‘std’
  977 |         *params.output_stream << std::endl;
      |                                       ^~~~
/usr/include/relacy/context.hpp:977:39: note: ‘std::endl’ is defined in header ‘<ostream>’; did you forget to ‘#include <ostream>’?
/usr/include/relacy/context.hpp:981:22: error: expected ‘;’ before ‘oss2’
  981 |         ostringstream oss2;
      |                      ^~~~~
      |                      ;
/usr/include/relacy/context.hpp:982:16: error: ‘struct rl::test_params’ has no member named ‘initial_state’
  982 |         params.initial_state = oss.str();
      |                ^~~~~~~~~~~~~
/usr/include/relacy/context.hpp:982:32: error: ‘oss’ was not declared in this scope
  982 |         params.initial_state = oss.str();
      |                                ^~~
/usr/include/relacy/context.hpp:985:16: error: ‘struct rl::test_params’ has no member named ‘final_state’
  985 |         params.final_state = oss.str();
      |                ^~~~~~~~~~~
/usr/include/relacy/context.hpp:986:9: error: ‘iteration_t’ was not declared in this scope
  986 |         iteration_t const stop_iter = params.stop_iteration;
      |         ^~~~~~~~~~~
/usr/include/relacy/context.hpp:989:94: error: ‘oss2’ was not declared in this scope
  989 |             res2 = run_test<test_t, random_scheduler<test_t::params::thread_count> >(params, oss2, true);
      |                                                                                              ^~~~
/usr/include/relacy/context.hpp:991:99: error: ‘oss2’ was not declared in this scope
  991 |             res2 = run_test<test_t, full_search_scheduler<test_t::params::thread_count> >(params, oss2, true);
      |                                                                                                   ^~~~
/usr/include/relacy/context.hpp:993:101: error: ‘oss2’ was not declared in this scope
  993 |             res2 = run_test<test_t, context_bound_scheduler<test_t::params::thread_count> >(params, oss2, true);
      |                                                                                                     ^~~~
/usr/include/relacy/context.hpp:1003:26: error: ‘struct rl::test_params’ has no member named ‘stop_iteration’
 1003 |         RL_VERIFY(params.stop_iteration == stop_iter);
      |                          ^~~~~~~~~~~~~~
/usr/include/relacy/context.hpp:1003:44: error: ‘stop_iter’ was not declared in this scope
 1003 |         RL_VERIFY(params.stop_iteration == stop_iter);
      |                                            ^~~~~~~~~
/usr/include/relacy/context.hpp: In function ‘void rl::dtor_arr_impl(void*)’:
/usr/include/relacy/context.hpp:1051:35: error: ‘alignment’ was not declared in this scope
 1051 |     type* p = (type*)((char*)pp + alignment);
      |                                   ^~~~~~~~~
/usr/include/relacy/context.hpp: At global scope:
/usr/include/relacy/context.hpp:1061:34: error: ‘rl::debug_info_param’ has not been declared
 1061 | type* new_arr_impl(size_t count, rl::debug_info_param info)
      |                                  ^~
/usr/include/relacy/context.hpp: In function ‘type* rl::new_arr_impl(size_t, int)’:
/usr/include/relacy/context.hpp:1063:15: error: ‘alignment’ was not declared in this scope
 1063 |     RL_VERIFY(alignment >= sizeof(size_t));
      |               ^~~~~~~~~
/usr/include/relacy/context.hpp: At global scope:
/usr/include/relacy/context.hpp:1098:31: error: ‘debug_info_param’ has not been declared
 1098 | void delete_arr_impl(type* p, debug_info_param info)
      |                               ^~~~~~~~~~~~~~~~
/usr/include/relacy/context.hpp: In function ‘void rl::delete_arr_impl(type*, int)’:
/usr/include/relacy/context.hpp:1103:30: error: ‘alignment’ was not declared in this scope
 1103 |     char* begin = (char*)p - alignment;
      |                              ^~~~~~~~~
/usr/include/relacy/context.hpp: At global scope:
/usr/include/relacy/context.hpp:1114:27: error: ‘debug_info_param’ has not been declared
 1114 | void delete_impl(type* p, debug_info_param info)
      |                           ^~~~~~~~~~~~~~~~
/usr/include/relacy/context.hpp: In function ‘unsigned int rl::rand(unsigned int)’:
/usr/include/relacy/context.hpp:1128:15: error: invalid use of incomplete type ‘class rl::context’
 1128 |     return ctx().rand(limit, sched_type_user);
      |            ~~~^~
/usr/include/relacy/context_base.hpp:93:7: note: forward declaration of ‘class rl::context’
   93 | class context
      |       ^~~~~~~
/usr/include/relacy/context.hpp:1128:30: error: ‘sched_type_user’ was not declared in this scope
 1128 |     return ctx().rand(limit, sched_type_user);
      |                              ^~~~~~~~~~~~~~~
/usr/include/relacy/context.hpp: In function ‘unsigned int rl::thread_index()’:
/usr/include/relacy/context.hpp:1133:15: error: invalid use of incomplete type ‘class rl::context’
 1133 |     return ctx().threadx_->index_;
      |            ~~~^~
/usr/include/relacy/context_base.hpp:93:7: note: forward declaration of ‘class rl::context’
   93 | class context
      |       ^~~~~~~
/usr/include/relacy/context.hpp: At global scope:
/usr/include/relacy/context.hpp:1139:5: error: ‘debug_info’ does not name a type
 1139 |     debug_info info;
      |     ^~~~~~~~~~
/usr/include/relacy/context.hpp:1140:31: error: expected ‘)’ before ‘info’
 1140 |     new_proxy(debug_info_param info)
      |              ~                ^~~~~
      |                               )
/usr/include/relacy/context.hpp: In member function ‘T* rl::new_proxy::operator%(T*)’:
/usr/include/relacy/context.hpp:1153:13: error: ‘debug_info’ is not a member of ‘rl’
 1153 |             RL_HIST(memory_alloc_event) {p, sz, false} RL_HIST_END();
      |             ^~~~~~~
/usr/include/relacy/context.hpp:1153:56: error: ‘rl_info_c’ was not declared in this scope
 1153 |             RL_HIST(memory_alloc_event) {p, sz, false} RL_HIST_END();
      |                                                        ^~~~~~~~~~~
/usr/include/relacy/context.hpp: At global scope:
/usr/include/relacy/context.hpp:1162:34: error: expected ‘)’ before ‘info’
 1162 |     delete_proxy(debug_info_param info)
      |                 ~                ^~~~~
      |                                  )
/usr/include/relacy/context.hpp:1170:35: error: ‘debug_info_param’ has not been declared
 1170 | inline void* rl_malloc(size_t sz, debug_info_param info)
      |                                   ^~~~~~~~~~~~~~~~
/usr/include/relacy/context.hpp: In function ‘void* rl::rl_malloc(size_t, int)’:
/usr/include/relacy/context.hpp:1172:15: error: invalid use of incomplete type ‘class rl::context’
 1172 |     return ctx().alloc(sz, false, info);
      |            ~~~^~
/usr/include/relacy/context_base.hpp:93:7: note: forward declaration of ‘class rl::context’
   93 | class context
      |       ^~~~~~~
/usr/include/relacy/context.hpp: At global scope:
/usr/include/relacy/context.hpp:1175:47: error: ‘debug_info_param’ has not been declared
 1175 | inline void* rl_calloc(size_t sz, size_t cnt, debug_info_param info)
      |                                               ^~~~~~~~~~~~~~~~
/usr/include/relacy/context.hpp: In function ‘void* rl::rl_calloc(size_t, size_t, int)’:
/usr/include/relacy/context.hpp:1177:18: error: invalid use of incomplete type ‘class rl::context’
 1177 |     void* p = ctx().alloc(sz * cnt, false, info);
      |               ~~~^~
/usr/include/relacy/context_base.hpp:93:7: note: forward declaration of ‘class rl::context’
   93 | class context
      |       ^~~~~~~
/usr/include/relacy/context.hpp: At global scope:
/usr/include/relacy/context.hpp:1182:42: error: ‘debug_info_param’ has not been declared
 1182 | inline void* realloc(void* p, size_t sz, debug_info_param info)
      |                                          ^~~~~~~~~~~~~~~~
/usr/include/relacy/context.hpp: In function ‘void* rl::realloc(void*, size_t, int)’:
/usr/include/relacy/context.hpp:1186:12: error: invalid use of incomplete type ‘class rl::context’
 1186 |         ctx().free(p, false, info);
      |         ~~~^~
/usr/include/relacy/context_base.hpp:93:7: note: forward declaration of ‘class rl::context’
   93 | class context
      |       ^~~~~~~
/usr/include/relacy/context.hpp:1191:23: error: invalid use of incomplete type ‘class rl::context’
 1191 |         void* pp = ctx().alloc(sz, false, info);
      |                    ~~~^~
/usr/include/relacy/context_base.hpp:93:7: note: forward declaration of ‘class rl::context’
   93 | class context
      |       ^~~~~~~
/usr/include/relacy/context.hpp:1193:12: error: invalid use of incomplete type ‘class rl::context’
 1193 |         ctx().free(p, false, info);
      |         ~~~^~
/usr/include/relacy/context_base.hpp:93:7: note: forward declaration of ‘class rl::context’
   93 | class context
      |       ^~~~~~~
/usr/include/relacy/context.hpp: At global scope:
/usr/include/relacy/context.hpp:1198:30: error: ‘debug_info_param’ has not been declared
 1198 | inline void rl_free(void* p, debug_info_param info)
      |                              ^~~~~~~~~~~~~~~~
/usr/include/relacy/context.hpp: In function ‘void rl::rl_free(void*, int)’:
/usr/include/relacy/context.hpp:1200:8: error: invalid use of incomplete type ‘class rl::context’
 1200 |     ctx().free(p, false, info);
      |     ~~~^~
/usr/include/relacy/context_base.hpp:93:7: note: forward declaration of ‘class rl::context’
   93 | class context
      |       ^~~~~~~
/usr/include/relacy/context.hpp: In function ‘size_t rl::hash_ptr(const void*, size_t)’:
/usr/include/relacy/context.hpp:1205:15: error: invalid use of incomplete type ‘class rl::context’
 1205 |     return ctx().get_addr_hash(p) % size;
      |            ~~~^~
/usr/include/relacy/context_base.hpp:93:7: note: forward declaration of ‘class rl::context’
   93 | class context
      |       ^~~~~~~
/usr/include/relacy/context.hpp: At global scope:
/usr/include/relacy/context.hpp:1208:13: error: variable or field ‘systemwide_fence’ declared void
 1208 | inline void systemwide_fence(debug_info_param info)
      |             ^~~~~~~~~~~~~~~~
/usr/include/relacy/context.hpp:1208:30: error: ‘debug_info_param’ was not declared in this scope
 1208 | inline void systemwide_fence(debug_info_param info)
      |                              ^~~~~~~~~~~~~~~~
/usr/include/relacy/context.hpp:1219:41: error: ‘rl::debug_info_param’ has not been declared
 1219 | inline void* operator new (size_t size, rl::debug_info_param info)
      |                                         ^~
/usr/include/relacy/context.hpp: In function ‘void* operator new(size_t, int)’:
/usr/include/relacy/context.hpp:1221:19: error: invalid use of incomplete type ‘class rl::context’
 1221 |     return rl::ctx().alloc(size, false, info);
      |            ~~~~~~~^~
/usr/include/relacy/context_base.hpp:93:7: note: forward declaration of ‘class rl::context’
   93 | class context
      |       ^~~~~~~
/usr/include/relacy/context.hpp: At global scope:
/usr/include/relacy/context.hpp:1224:44: error: ‘rl::debug_info_param’ has not been declared
 1224 | inline void* operator new [] (size_t size, rl::debug_info_param info)
      |                                            ^~
/usr/include/relacy/context.hpp: In function ‘void* operator new [](size_t, int)’:
/usr/include/relacy/context.hpp:1226:19: error: invalid use of incomplete type ‘class rl::context’
 1226 |     return rl::ctx().alloc(size, false, info);
      |            ~~~~~~~^~
/usr/include/relacy/context_base.hpp:93:7: note: forward declaration of ‘class rl::context’
   93 | class context
      |       ^~~~~~~
/usr/include/relacy/context.hpp: At global scope:
/usr/include/relacy/context.hpp:1229:39: error: ‘rl::debug_info_param’ has not been declared
 1229 | inline void operator delete (void* p, rl::debug_info_param info)
      |                                       ^~
/usr/include/relacy/context.hpp: In function ‘void operator delete(void*, int)’:
/usr/include/relacy/context.hpp:1231:12: error: invalid use of incomplete type ‘class rl::context’
 1231 |     rl::ctx().free(p, false, info);
      |     ~~~~~~~^~
/usr/include/relacy/context_base.hpp:93:7: note: forward declaration of ‘class rl::context’
   93 | class context
      |       ^~~~~~~
/usr/include/relacy/context.hpp: At global scope:
/usr/include/relacy/context.hpp:1234:42: error: ‘rl::debug_info_param’ has not been declared
 1234 | inline void operator delete [] (void* p, rl::debug_info_param info)
      |                                          ^~
/usr/include/relacy/context.hpp: In function ‘void operator delete [](void*, int)’:
/usr/include/relacy/context.hpp:1236:12: error: invalid use of incomplete type ‘class rl::context’
 1236 |     rl::ctx().free(p, false, info);
      |     ~~~~~~~^~
/usr/include/relacy/context_base.hpp:93:7: note: forward declaration of ‘class rl::context’
   93 | class context
      |       ^~~~~~~
/usr/include/relacy/context.hpp: At global scope:
/usr/include/relacy/context.hpp:1256:41: error: expected initializer before ‘RL_THROW_SPEC’
 1256 | inline void* operator new (size_t size) RL_THROW_SPEC(std::bad_alloc)
      |                                         ^~~~~~~~~~~~~
/usr/include/relacy/context.hpp:1264:44: error: expected initializer before ‘RL_THROW_SPEC’
 1264 | inline void* operator new [] (size_t size) RL_THROW_SPEC(std::bad_alloc)
      |                                            ^~~~~~~~~~~~~
/usr/include/relacy/context.hpp: In function ‘void operator delete(void*)’:
/usr/include/relacy/context.hpp:1275:16: error: invalid use of incomplete type ‘class rl::context’
 1275 |         rl::ctx().free(p);
      |         ~~~~~~~^~
/usr/include/relacy/context_base.hpp:93:7: note: forward declaration of ‘class rl::context’
   93 | class context
      |       ^~~~~~~
/usr/include/relacy/context.hpp: In function ‘void operator delete [](void*)’:
/usr/include/relacy/context.hpp:1283:16: error: invalid use of incomplete type ‘class rl::context’
 1283 |         rl::ctx().free(p);
      |         ~~~~~~~^~
/usr/include/relacy/context_base.hpp:93:7: note: forward declaration of ‘class rl::context’
   93 | class context
      |       ^~~~~~~
In file included from /usr/include/relacy/relacy.hpp:19:
/usr/include/relacy/context_base_impl.hpp: At global scope:
/usr/include/relacy/context_base_impl.hpp:35:41: error: invalid use of incomplete type ‘class rl::context’
   35 | inline void context::disable_preemption()
      |                                         ^
/usr/include/relacy/context_base.hpp:93:7: note: forward declaration of ‘class rl::context’
   93 | class context
      |       ^~~~~~~
/usr/include/relacy/context_base_impl.hpp:40:40: error: invalid use of incomplete type ‘class rl::context’
   40 | inline void context::enable_preemption()
      |                                        ^
/usr/include/relacy/context_base.hpp:93:7: note: forward declaration of ‘class rl::context’
   93 | class context
      |       ^~~~~~~
/usr/include/relacy/context_base_impl.hpp:45:31: error: invalid use of incomplete type ‘class rl::context’
   45 | inline int context::get_errno()
      |                               ^
/usr/include/relacy/context_base.hpp:93:7: note: forward declaration of ‘class rl::context’
   93 | class context
      |       ^~~~~~~
/usr/include/relacy/context_base_impl.hpp:51:41: error: invalid use of incomplete type ‘class rl::context’
   51 | inline void context::set_errno(int value)
      |                                         ^
/usr/include/relacy/context_base.hpp:93:7: note: forward declaration of ‘class rl::context’
   93 | class context
      |       ^~~~~~~
/usr/include/relacy/context_base_impl.hpp:58:24: error: invalid use of incomplete type ‘class rl::context’
   58 | void context::exec_log(debug_info_param info, event_t const& ev)
      |                        ^~~~~~~~~~~~~~~~
/usr/include/relacy/context_base.hpp:93:7: note: forward declaration of ‘class rl::context’
   93 | class context
      |       ^~~~~~~
/usr/include/relacy/context_base_impl.hpp:58:24: error: ‘debug_info_param’ was not declared in this scope
   58 | void context::exec_log(debug_info_param info, event_t const& ev)
      |                        ^~~~~~~~~~~~~~~~
/usr/include/relacy/context_base_impl.hpp:58:55: error: expected primary-expression before ‘const’
   58 | void context::exec_log(debug_info_param info, event_t const& ev)
      |                                                       ^~~~~
In file included from /usr/include/relacy/relacy.hpp:20:
/usr/include/relacy/backoff.hpp:24:35: error: ‘debug_info_param’ has not been declared
   24 | inline void yield(unsigned count, debug_info_param info)
      |                                   ^~~~~~~~~~~~~~~~
/usr/include/relacy/backoff.hpp: In function ‘void rl::yield(unsigned int, int)’:
/usr/include/relacy/backoff.hpp:26:8: error: invalid use of incomplete type ‘class rl::context’
   26 |     ctx().yield(count, info);
      |     ~~~^~
/usr/include/relacy/context_base.hpp:93:7: note: forward declaration of ‘class rl::context’
   93 | class context
      |       ^~~~~~~
/usr/include/relacy/backoff.hpp: At global scope:
/usr/include/relacy/backoff.hpp:39:16: error: ‘debug_info_param’ has not been declared
   39 |     void yield(debug_info_param info)
      |                ^~~~~~~~~~~~~~~~
In file included from /usr/include/relacy/relacy.hpp:21:
/usr/include/relacy/atomic_fence.hpp:40:1: error: ‘RL_INLINE’ does not name a type
   40 | RL_INLINE
      | ^~~~~~~~~
/usr/include/relacy/atomic_fence.hpp:40:1: note: the macro ‘RL_INLINE’ had not yet been defined
/usr/include/relacy/platform.hpp:241: note: it was later defined here
  241 | #   define RL_INLINE inline
      | 
/usr/include/relacy/atomic_fence.hpp:72:1: error: ‘RL_INLINE’ does not name a type
   72 | RL_INLINE
      | ^~~~~~~~~
/usr/include/relacy/atomic_fence.hpp:72:1: note: the macro ‘RL_INLINE’ had not yet been defined
/usr/include/relacy/platform.hpp:241: note: it was later defined here
  241 | #   define RL_INLINE inline
      | 
In file included from /usr/include/relacy/atomic_events.hpp:18,
                 from /usr/include/relacy/var.hpp:19,
                 from /usr/include/relacy/relacy.hpp:23:
/usr/include/relacy/rmw.hpp: In function ‘const char* rl::format(rmw_type_e)’:
/usr/include/relacy/rmw.hpp:47:5: error: ‘RL_VERIFY’ was not declared in this scope
   47 |     RL_VERIFY(!"invalid rmw type");
      |     ^~~~~~~~~
/usr/include/relacy/rmw.hpp:47:5: note: the macro ‘RL_VERIFY’ had not yet been defined
/usr/include/relacy/base.hpp:141: note: it was later defined here
  141 | #   define RL_VERIFY(x) (void)0
      | 
/usr/include/relacy/rmw.hpp:48:16: error: ‘logic_error’ is not a member of ‘std’
   48 |     throw std::logic_error("invalid rmw type");
      |                ^~~~~~~~~~~
/usr/include/relacy/atomic_events.hpp: At global scope:
/usr/include/relacy/atomic_events.hpp:49:5: error: ‘debug_info’ does not name a type
   49 |     debug_info var_info_;
      |     ^~~~~~~~~~
/usr/include/relacy/atomic_events.hpp: In member function ‘void rl::atomic_cas_event<T>::output(std::ostream&) const’:
/usr/include/relacy/atomic_events.hpp:61:11: error: no match for ‘operator<<’ (operand types are ‘std::ostream’ {aka ‘std::basic_ostream<char>’} and ‘const char [2]’)
   61 |         s << "<" << std::hex << var_addr_ << std::dec << ">"
      |         ~ ^~ ~~~
      |         |    |
      |         |    const char [2]
      |         std::ostream {aka std::basic_ostream<char>}
/usr/include/relacy/history.hpp:76:22: note: candidate: ‘std::ostream& rl::operator<<(std::ostream&, int)’ (near match)
   76 | inline std::ostream& operator << (std::ostream& ss, debug_info_param info)
      |                      ^~~~~~~~
/usr/include/relacy/history.hpp:76:22: note:   conversion of argument 2 would be ill-formed:
/usr/include/relacy/atomic_events.hpp:61:26: error: ‘hex’ is not a member of ‘std’
   61 |         s << "<" << std::hex << var_addr_ << std::dec << ">"
      |                          ^~~
/usr/include/relacy/atomic_events.hpp:61:51: error: ‘dec’ is not a member of ‘std’
   61 |         s << "<" << std::hex << var_addr_ << std::dec << ">"
      |                                                   ^~~
/usr/include/relacy/atomic_events.hpp: In member function ‘void rl::atomic_load_event<T>::output(std::ostream&) const’:
/usr/include/relacy/atomic_events.hpp:88:11: error: no match for ‘operator<<’ (operand types are ‘std::ostream’ {aka ‘std::basic_ostream<char>’} and ‘const char [2]’)
   88 |         s << "<" << std::hex << var_addr_ << std::dec << ">"
      |         ~ ^~ ~~~
      |         |    |
      |         |    const char [2]
      |         std::ostream {aka std::basic_ostream<char>}
/usr/include/relacy/history.hpp:76:22: note: candidate: ‘std::ostream& rl::operator<<(std::ostream&, int)’ (near match)
   76 | inline std::ostream& operator << (std::ostream& ss, debug_info_param info)
      |                      ^~~~~~~~
/usr/include/relacy/history.hpp:76:22: note:   conversion of argument 2 would be ill-formed:
/usr/include/relacy/atomic_events.hpp:88:26: error: ‘hex’ is not a member of ‘std’
   88 |         s << "<" << std::hex << var_addr_ << std::dec << ">"
      |                          ^~~
/usr/include/relacy/atomic_events.hpp:88:51: error: ‘dec’ is not a member of ‘std’
   88 |         s << "<" << std::hex << var_addr_ << std::dec << ">"
      |                                                   ^~~
/usr/include/relacy/atomic_events.hpp: In member function ‘void rl::atomic_store_event<T>::output(std::ostream&) const’:
/usr/include/relacy/atomic_events.hpp:110:11: error: no match for ‘operator<<’ (operand types are ‘std::ostream’ {aka ‘std::basic_ostream<char>’} and ‘const char [2]’)
  110 |         s << "<" << std::hex << var_addr_ << std::dec << ">"
      |         ~ ^~ ~~~
      |         |    |
      |         |    const char [2]
      |         std::ostream {aka std::basic_ostream<char>}
/usr/include/relacy/history.hpp:76:22: note: candidate: ‘std::ostream& rl::operator<<(std::ostream&, int)’ (near match)
   76 | inline std::ostream& operator << (std::ostream& ss, debug_info_param info)
      |                      ^~~~~~~~
/usr/include/relacy/history.hpp:76:22: note:   conversion of argument 2 would be ill-formed:
/usr/include/relacy/atomic_events.hpp:110:26: error: ‘hex’ is not a member of ‘std’
  110 |         s << "<" << std::hex << var_addr_ << std::dec << ">"
      |                          ^~~
/usr/include/relacy/atomic_events.hpp:110:51: error: ‘dec’ is not a member of ‘std’
  110 |         s << "<" << std::hex << var_addr_ << std::dec << ">"
      |                                                   ^~~
/usr/include/relacy/atomic_events.hpp: At global scope:
/usr/include/relacy/atomic_events.hpp:125:5: error: ‘debug_info’ does not name a type
  125 |     debug_info var_info_;
      |     ^~~~~~~~~~
/usr/include/relacy/atomic_events.hpp: In member function ‘void rl::atomic_rmw_event<T, Y>::output(std::ostream&) const’:
/usr/include/relacy/atomic_events.hpp:135:11: error: no match for ‘operator<<’ (operand types are ‘std::ostream’ {aka ‘std::basic_ostream<char>’} and ‘const char [2]’)
  135 |         s << "<" << std::hex << var_addr_ << std::dec << ">"
      |         ~ ^~ ~~~
      |         |    |
      |         |    const char [2]
      |         std::ostream {aka std::basic_ostream<char>}
/usr/include/relacy/history.hpp:76:22: note: candidate: ‘std::ostream& rl::operator<<(std::ostream&, int)’ (near match)
   76 | inline std::ostream& operator << (std::ostream& ss, debug_info_param info)
      |                      ^~~~~~~~
/usr/include/relacy/history.hpp:76:22: note:   conversion of argument 2 would be ill-formed:
/usr/include/relacy/atomic_events.hpp:135:26: error: ‘hex’ is not a member of ‘std’
  135 |         s << "<" << std::hex << var_addr_ << std::dec << ">"
      |                          ^~~
/usr/include/relacy/atomic_events.hpp:135:51: error: ‘dec’ is not a member of ‘std’
  135 |         s << "<" << std::hex << var_addr_ << std::dec << ">"
      |                                                   ^~~
/usr/include/relacy/var.hpp: At global scope:
/usr/include/relacy/var.hpp:34:38: error: ‘debug_info_param’ has not been declared
   34 |     var_proxy_const(var<T> const& v, debug_info_param info)
      |                                      ^~~~~~~~~~~~~~~~
/usr/include/relacy/var.hpp:57:5: error: ‘debug_info’ does not name a type
   57 |     debug_info info_;
      |     ^~~~~~~~~~
/usr/include/relacy/var.hpp: In constructor ‘rl::var_proxy_const<T>::var_proxy_const(const rl::var<T>&, int)’:
/usr/include/relacy/var.hpp:36:11: error: class ‘rl::var_proxy_const<T>’ does not have any field named ‘info_’
   36 |         , info_(info)
      |           ^~~~~
/usr/include/relacy/var.hpp: In member function ‘T rl::var_proxy_const<T>::load() const’:
/usr/include/relacy/var.hpp:42:26: error: ‘info_’ was not declared in this scope
   42 |         return var_.load(info_);
      |                          ^~~~~
/usr/include/relacy/var.hpp: At global scope:
/usr/include/relacy/var.hpp:72:26: error: ‘debug_info_param’ has not been declared
   72 |     var_proxy(var<T>& v, debug_info_param info)
      |                          ^~~~~~~~~~~~~~~~
/usr/include/relacy/var.hpp:186:5: error: ‘debug_info’ does not name a type
  186 |     debug_info var_info_;
      |     ^~~~~~~~~~
/usr/include/relacy/var.hpp: In member function ‘void rl::var_event<T>::output(std::ostream&) const’:
/usr/include/relacy/var.hpp:205:11: error: no match for ‘operator<<’ (operand types are ‘std::ostream’ {aka ‘std::basic_ostream<char>’} and ‘const char [2]’)
  205 |         s << "<" << std::hex << var_addr_ << std::dec << "> "
      |         ~ ^~ ~~~
      |         |    |
      |         |    const char [2]
      |         std::ostream {aka std::basic_ostream<char>}
/usr/include/relacy/history.hpp:76:22: note: candidate: ‘std::ostream& rl::operator<<(std::ostream&, int)’ (near match)
   76 | inline std::ostream& operator << (std::ostream& ss, debug_info_param info)
      |                      ^~~~~~~~
/usr/include/relacy/history.hpp:76:22: note:   conversion of argument 2 would be ill-formed:
/usr/include/relacy/var.hpp:205:26: error: ‘hex’ is not a member of ‘std’
  205 |         s << "<" << std::hex << var_addr_ << std::dec << "> "
      |                          ^~~
/usr/include/relacy/var.hpp:205:51: error: ‘dec’ is not a member of ‘std’
  205 |         s << "<" << std::hex << var_addr_ << std::dec << "> "
      |                                                   ^~~
/usr/include/relacy/var.hpp: At global scope:
/usr/include/relacy/var.hpp:240:37: error: ‘debug_info_param’ has not been declared
  240 |     var_proxy_const<T> operator () (debug_info_param info) const
      |                                     ^~~~~~~~~~~~~~~~
/usr/include/relacy/var.hpp:245:31: error: ‘debug_info_param’ has not been declared
  245 |     var_proxy<T> operator () (debug_info_param info)
      |                               ^~~~~~~~~~~~~~~~
/usr/include/relacy/var.hpp:269:12: error: ‘debug_info_param’ has not been declared
  269 |     T load(debug_info_param info) const
      |            ^~~~~~~~~~~~~~~~
/usr/include/relacy/var.hpp:300:21: error: ‘debug_info_param’ has not been declared
  300 |     void store(T v, debug_info_param info)
      |                     ^~~~~~~~~~~~~~~~
/usr/include/relacy/var.hpp: In copy constructor ‘rl::var<T>::var(const rl::var<T>&)’:
/usr/include/relacy/var.hpp:231:21: error: ‘$’ was not declared in this scope
  231 |         init(r.load($));
      |                     ^
/usr/include/relacy/var.hpp:231:21: note: the macro ‘$’ had not yet been defined
/usr/include/relacy/base.hpp:118: note: it was later defined here
  118 | #define $ RL_INFO
      | 
/usr/include/relacy/var.hpp: In destructor ‘rl::var<T>::~var()’:
/usr/include/relacy/var.hpp:236:21: error: ‘$’ was not declared in this scope
  236 |         sign_.check($);
      |                     ^
/usr/include/relacy/var.hpp:236:21: note: the macro ‘$’ had not yet been defined
/usr/include/relacy/base.hpp:118: note: it was later defined here
  118 | #define $ RL_INFO
      | 
/usr/include/relacy/var.hpp: In member function ‘T rl::var<T>::load(int) const’:
/usr/include/relacy/var.hpp:276:13: error: ‘debug_info’ is not a member of ‘rl’
  276 |             RL_HIST(var_event<T>) {RL_INFO, this, T(), true} RL_HIST_END();
      |             ^~~~~~~
/usr/include/relacy/var.hpp:276:36: error: ‘RL_INFO’ was not declared in this scope
  276 |             RL_HIST(var_event<T>) {RL_INFO, this, T(), true} RL_HIST_END();
      |                                    ^~~~~~~
/usr/include/relacy/var.hpp:276:36: note: the macro ‘RL_INFO’ had not yet been defined
/usr/include/relacy/base.hpp:117: note: it was later defined here
  117 | #define RL_INFO ::rl::debug_info(__FUNCTION__, __FILE__, __LINE__)
      | 
/usr/include/relacy/var.hpp:276:62: error: ‘rl_info_c’ was not declared in this scope
  276 |             RL_HIST(var_event<T>) {RL_INFO, this, T(), true} RL_HIST_END();
      |                                                              ^~~~~~~~~~~
/usr/include/relacy/var.hpp:284:17: error: ‘debug_info’ is not a member of ‘rl’
  284 |                 RL_HIST(var_event<T>) {RL_INFO, this, T(), true} RL_HIST_END();
      |                 ^~~~~~~
/usr/include/relacy/var.hpp:284:40: error: ‘RL_INFO’ was not declared in this scope
  284 |                 RL_HIST(var_event<T>) {RL_INFO, this, T(), true} RL_HIST_END();
      |                                        ^~~~~~~
/usr/include/relacy/var.hpp:284:40: note: the macro ‘RL_INFO’ had not yet been defined
/usr/include/relacy/base.hpp:117: note: it was later defined here
  117 | #define RL_INFO ::rl::debug_info(__FUNCTION__, __FILE__, __LINE__)
      | 
/usr/include/relacy/var.hpp:284:66: error: ‘rl_info_c’ was not declared in this scope
  284 |                 RL_HIST(var_event<T>) {RL_INFO, this, T(), true} RL_HIST_END();
      |                                                                  ^~~~~~~~~~~
/usr/include/relacy/var.hpp:290:13: error: ‘debug_info’ is not a member of ‘rl’
  290 |             RL_HIST(var_event<T>) {RL_INFO, this, v, true} RL_HIST_END();
      |             ^~~~~~~
/usr/include/relacy/var.hpp:290:36: error: ‘RL_INFO’ was not declared in this scope
  290 |             RL_HIST(var_event<T>) {RL_INFO, this, v, true} RL_HIST_END();
      |                                    ^~~~~~~
/usr/include/relacy/var.hpp:290:36: note: the macro ‘RL_INFO’ had not yet been defined
/usr/include/relacy/base.hpp:117: note: it was later defined here
  117 | #define RL_INFO ::rl::debug_info(__FUNCTION__, __FILE__, __LINE__)
      | 
/usr/include/relacy/var.hpp:290:60: error: ‘rl_info_c’ was not declared in this scope
  290 |             RL_HIST(var_event<T>) {RL_INFO, this, v, true} RL_HIST_END();
      |                                                            ^~~~~~~~~~~
/usr/include/relacy/var.hpp: In member function ‘void rl::var<T>::store(T, int)’:
/usr/include/relacy/var.hpp:310:17: error: ‘debug_info’ is not a member of ‘rl’
  310 |                 RL_HIST(var_event<T>) {RL_INFO, this, T(), false} RL_HIST_END();
      |                 ^~~~~~~
/usr/include/relacy/var.hpp:310:40: error: ‘RL_INFO’ was not declared in this scope
  310 |                 RL_HIST(var_event<T>) {RL_INFO, this, T(), false} RL_HIST_END();
      |                                        ^~~~~~~
/usr/include/relacy/var.hpp:310:40: note: the macro ‘RL_INFO’ had not yet been defined
/usr/include/relacy/base.hpp:117: note: it was later defined here
  117 | #define RL_INFO ::rl::debug_info(__FUNCTION__, __FILE__, __LINE__)
      | 
/usr/include/relacy/var.hpp:310:67: error: ‘rl_info_c’ was not declared in this scope
  310 |                 RL_HIST(var_event<T>) {RL_INFO, this, T(), false} RL_HIST_END();
      |                                                                   ^~~~~~~~~~~
/usr/include/relacy/var.hpp:322:9: error: ‘debug_info’ is not a member of ‘rl’
  322 |         RL_HIST(var_event<T>) {RL_INFO, this, v, false} RL_HIST_END();
      |         ^~~~~~~
/usr/include/relacy/var.hpp:322:32: error: ‘RL_INFO’ was not declared in this scope
  322 |         RL_HIST(var_event<T>) {RL_INFO, this, v, false} RL_HIST_END();
      |                                ^~~~~~~
/usr/include/relacy/var.hpp:322:32: note: the macro ‘RL_INFO’ had not yet been defined
/usr/include/relacy/base.hpp:117: note: it was later defined here
  117 | #define RL_INFO ::rl::debug_info(__FUNCTION__, __FILE__, __LINE__)
      | 
/usr/include/relacy/var.hpp:322:57: error: ‘rl_info_c’ was not declared in this scope
  322 |         RL_HIST(var_event<T>) {RL_INFO, this, v, false} RL_HIST_END();
      |                                                         ^~~~~~~~~~~
/usr/include/relacy/var.hpp: At global scope:
/usr/include/relacy/var.hpp:331:10: error: ‘thread_id_t’ has not been declared
  331 | template<thread_id_t thread_count>
      |          ^~~~~~~~~~~
In file included from /usr/include/relacy/relacy.hpp:24:
/usr/include/relacy/thread_local.hpp:25:36: error: expected template-name before ‘<’ token
   25 | class generic_thread_local : nocopy<>
      |                                    ^
/usr/include/relacy/thread_local.hpp:25:36: error: expected ‘{’ before ‘<’ token
/usr/include/relacy/thread_local.hpp:25:36: error: expected unqualified-id before ‘<’ token
/usr/include/relacy/thread_local.hpp:78:50: error: ‘debug_info_param’ has not been declared
   78 |     thread_local_proxy(thread_local_var<T>& var, debug_info_param info)
      |                                                  ^~~~~~~~~~~~~~~~
/usr/include/relacy/thread_local.hpp:101:5: error: ‘debug_info’ does not name a type
  101 |     debug_info info_;
      |     ^~~~~~~~~~
/usr/include/relacy/thread_local.hpp: In constructor ‘rl::thread_local_proxy<T>::thread_local_proxy(rl::thread_local_var<T>&, int)’:
/usr/include/relacy/thread_local.hpp:80:11: error: class ‘rl::thread_local_proxy<T>’ does not have any field named ‘info_’
   80 |         , info_(info)
      |           ^~~~~
/usr/include/relacy/thread_local.hpp: In member function ‘rl::thread_local_proxy<T>::operator T() const’:
/usr/include/relacy/thread_local.hpp:85:25: error: ‘info_’ was not declared in this scope
   85 |         return var_.get(info_);
      |                         ^~~~~
/usr/include/relacy/thread_local.hpp: In member function ‘T rl::thread_local_proxy<T>::operator->() const’:
/usr/include/relacy/thread_local.hpp:90:25: error: ‘info_’ was not declared in this scope
   90 |         return var_.get(info_);
      |                         ^~~~~
/usr/include/relacy/thread_local.hpp: In member function ‘rl::thread_local_proxy<T> rl::thread_local_proxy<T>::operator=(T)’:
/usr/include/relacy/thread_local.hpp:95:25: error: ‘info_’ was not declared in this scope
   95 |         var_.set(value, info_);
      |                         ^~~~~
/usr/include/relacy/thread_local.hpp: At global scope:
/usr/include/relacy/thread_local.hpp:107:26: error: invalid use of incomplete type ‘class rl::generic_thread_local’
  107 | class thread_local_var : generic_thread_local
      |                          ^~~~~~~~~~~~~~~~~~~~
/usr/include/relacy/thread_local.hpp:25:7: note: forward declaration of ‘class rl::generic_thread_local’
   25 | class generic_thread_local : nocopy<>
      |       ^~~~~~~~~~~~~~~~~~~~
/usr/include/relacy/thread_local.hpp:123:40: error: ‘debug_info_param’ has not been declared
  123 |     thread_local_proxy<T> operator () (debug_info_param info)
      |                                        ^~~~~~~~~~~~~~~~
/usr/include/relacy/thread_local.hpp:128:23: error: ‘debug_info_param’ has not been declared
  128 |     void set(T value, debug_info_param info)
      |                       ^~~~~~~~~~~~~~~~
/usr/include/relacy/thread_local.hpp:138:11: error: ‘debug_info_param’ has not been declared
  138 |     T get(debug_info_param info)
      |           ^~~~~~~~~~~~~~~~
/usr/include/relacy/thread_local.hpp: In destructor ‘rl::thread_local_var<T>::~thread_local_var()’:
/usr/include/relacy/thread_local.hpp:119:35: error: incomplete type ‘rl::generic_thread_local’ used in nested name specifier
  119 |             generic_thread_local::deinit($);
      |                                   ^~~~~~
/usr/include/relacy/thread_local.hpp:119:42: error: ‘$’ was not declared in this scope
  119 |             generic_thread_local::deinit($);
      |                                          ^
/usr/include/relacy/thread_local.hpp:119:42: note: the macro ‘$’ had not yet been defined
/usr/include/relacy/base.hpp:118: note: it was later defined here
  118 | #define $ RL_INFO
      | 
/usr/include/relacy/thread_local.hpp: In member function ‘void rl::thread_local_var<T>::set(T, int)’:
/usr/include/relacy/thread_local.hpp:133:35: error: incomplete type ‘rl::generic_thread_local’ used in nested name specifier
  133 |             generic_thread_local::init(0, info);
      |                                   ^~~~
/usr/include/relacy/thread_local.hpp:135:31: error: incomplete type ‘rl::generic_thread_local’ used in nested name specifier
  135 |         generic_thread_local::set((intptr_t)value, info);
      |                               ^~~
/usr/include/relacy/thread_local.hpp: In member function ‘T rl::thread_local_var<T>::get(int)’:
/usr/include/relacy/thread_local.hpp:143:35: error: incomplete type ‘rl::generic_thread_local’ used in nested name specifier
  143 |             generic_thread_local::init(0, info);
      |                                   ^~~~
/usr/include/relacy/thread_local.hpp:145:41: error: incomplete type ‘rl::generic_thread_local’ used in nested name specifier
  145 |         return (T)generic_thread_local::get(info);
      |                                         ^~~
/usr/include/relacy/thread_local.hpp: At global scope:
/usr/include/relacy/thread_local.hpp:153:34: error: ‘debug_info_param’ was not declared in this scope
  153 | inline unsigned long rl_TlsAlloc(debug_info_param info)
      |                                  ^~~~~~~~~~~~~~~~
/usr/include/relacy/thread_local.hpp:166:44: error: ‘debug_info_param’ has not been declared
  166 | inline void rl_TlsFree(unsigned long slot, debug_info_param info)
      |                                            ^~~~~~~~~~~~~~~~
/usr/include/relacy/thread_local.hpp:177:49: error: ‘debug_info_param’ has not been declared
  177 | inline void* rl_TlsGetValue(unsigned long slot, debug_info_param info)
      |                                                 ^~~~~~~~~~~~~~~~
/usr/include/relacy/thread_local.hpp:182:60: error: ‘debug_info_param’ has not been declared
  182 | inline int rl_TlsSetValue(unsigned long slot, void* value, debug_info_param info)
      |                                                            ^~~~~~~~~~~~~~~~
In file included from /usr/include/relacy/relacy.hpp:26:
/usr/include/relacy/dyn_thread.hpp:25:26: error: expected template-name before ‘<’ token
   25 | class dyn_thread : nocopy<>
      |                          ^
/usr/include/relacy/dyn_thread.hpp:25:26: error: expected ‘{’ before ‘<’ token
/usr/include/relacy/dyn_thread.hpp:25:26: error: expected unqualified-id before ‘<’ token
In file included from /usr/include/relacy/relacy.hpp:28:
/usr/include/relacy/stdlib/mutex.hpp:31:35: error: expected template-name before ‘<’ token
   31 | struct generic_mutex_data : nocopy<>
      |                                   ^
/usr/include/relacy/stdlib/mutex.hpp:31:35: error: expected ‘{’ before ‘<’ token
/usr/include/relacy/stdlib/mutex.hpp:31:35: error: expected unqualified-id before ‘<’ token
/usr/include/relacy/stdlib/mutex.hpp:47:10: error: ‘thread_id_t’ has not been declared
   47 | template<thread_id_t thread_count>
      |          ^~~~~~~~~~~
/usr/include/relacy/stdlib/mutex.hpp:513:105: error: ‘debug_info_param’ has not been declared
  513 |     void init(bool is_rw, bool is_exclusive_recursive, bool is_shared_recursive, bool failing_try_lock, debug_info_param info)
      |                                                                                                         ^~~~~~~~~~~~~~~~
/usr/include/relacy/stdlib/mutex.hpp:521:17: error: ‘debug_info_param’ has not been declared
  521 |     void deinit(debug_info_param info)
      |                 ^~~~~~~~~~~~~~~~
/usr/include/relacy/stdlib/mutex.hpp:529:15: error: ‘debug_info_param’ has not been declared
  529 |     void lock(debug_info_param info)
      |               ^~~~~~~~~~~~~~~~
/usr/include/relacy/stdlib/mutex.hpp:534:31: error: ‘debug_info_param’ has not been declared
  534 |     bool lock_exclusive_timed(debug_info_param info)
      |                               ^~~~~~~~~~~~~~~~
/usr/include/relacy/stdlib/mutex.hpp:539:17: error: ‘debug_info_param’ has not been declared
  539 |     void unlock(debug_info_param info)
      |                 ^~~~~~~~~~~~~~~~
/usr/include/relacy/stdlib/mutex.hpp:544:25: error: ‘debug_info_param’ has not been declared
  544 |     void lock_exclusive(debug_info_param info)
      |                         ^~~~~~~~~~~~~~~~
/usr/include/relacy/stdlib/mutex.hpp:549:29: error: ‘debug_info_param’ has not been declared
  549 |     bool try_lock_exclusive(debug_info_param info)
      |                             ^~~~~~~~~~~~~~~~
/usr/include/relacy/stdlib/mutex.hpp:554:27: error: ‘debug_info_param’ has not been declared
  554 |     void unlock_exclusive(debug_info_param info)
      |                           ^~~~~~~~~~~~~~~~
/usr/include/relacy/stdlib/mutex.hpp:559:22: error: ‘debug_info_param’ has not been declared
  559 |     void lock_shared(debug_info_param info)
      |                      ^~~~~~~~~~~~~~~~
/usr/include/relacy/stdlib/mutex.hpp:564:26: error: ‘debug_info_param’ has not been declared
  564 |     bool try_lock_shared(debug_info_param info)
      |                          ^~~~~~~~~~~~~~~~
/usr/include/relacy/stdlib/mutex.hpp:569:24: error: ‘debug_info_param’ has not been declared
  569 |     void unlock_shared(debug_info_param info)
      |                        ^~~~~~~~~~~~~~~~
/usr/include/relacy/stdlib/mutex.hpp:574:37: error: ‘debug_info_param’ has not been declared
  574 |     void unlock_exclusive_or_shared(debug_info_param info)
      |                                     ^~~~~~~~~~~~~~~~
/usr/include/relacy/stdlib/mutex.hpp:583:31: error: ‘debug_info_param’ has not been declared
  583 |     generic_mutex_data* check(debug_info_param info)
      |                               ^~~~~~~~~~~~~~~~
/usr/include/relacy/stdlib/mutex.hpp:590:67: error: ‘debug_info_param’ has not been declared
  590 |     virtual sema_wakeup_reason wait(bool try_wait, bool is_timed, debug_info_param info)
      |                                                                   ^~~~~~~~~~~~~~~~
/usr/include/relacy/stdlib/mutex.hpp:609:25: error: ‘debug_info_param’ has not been declared
  609 |     virtual bool signal(debug_info_param info)
      |                         ^~~~~~~~~~~~~~~~
/usr/include/relacy/stdlib/mutex.hpp:615:30: error: ‘debug_info_param’ has not been declared
  615 |     virtual bool is_signaled(debug_info_param info)
      |                              ^~~~~~~~~~~~~~~~
/usr/include/relacy/stdlib/mutex.hpp:620:33: error: ‘debug_info_param’ has not been declared
  620 |     virtual void memory_acquire(debug_info_param info)
      |                                 ^~~~~~~~~~~~~~~~
/usr/include/relacy/stdlib/mutex.hpp:625:32: error: ‘debug_info_param’ has not been declared
  625 |     virtual void* prepare_wait(debug_info_param info)
      |                                ^~~~~~~~~~~~~~~~
/usr/include/relacy/stdlib/mutex.hpp:635:53: error: expected template-name before ‘<’ token
  635 | class std_generic_mutex : generic_mutex<tag>, nocopy<>
      |                                                     ^
/usr/include/relacy/stdlib/mutex.hpp:635:53: error: expected ‘{’ before ‘<’ token
In file included from /usr/include/relacy/relacy.hpp:29:
/usr/include/relacy/stdlib/condition_variable.hpp:27:23: error: ‘debug_info_param’ has not been declared
   27 |     virtual void lock(debug_info_param info) const = 0;
      |                       ^~~~~~~~~~~~~~~~
/usr/include/relacy/stdlib/condition_variable.hpp:28:25: error: ‘debug_info_param’ has not been declared
   28 |     virtual void unlock(debug_info_param info) const = 0;
      |                         ^~~~~~~~~~~~~~~~
/usr/include/relacy/stdlib/condition_variable.hpp:44:23: error: ‘debug_info_param’ has not been declared
   44 |     virtual void lock(debug_info_param info) const
      |                       ^~~~~~~~~~~~~~~~
/usr/include/relacy/stdlib/condition_variable.hpp:49:25: error: ‘debug_info_param’ has not been declared
   49 |     virtual void unlock(debug_info_param info) const
      |                         ^~~~~~~~~~~~~~~~
/usr/include/relacy/stdlib/condition_variable.hpp:86:29: error: ‘debug_info_param’ has not been declared
   86 |     virtual void notify_one(debug_info_param info) = 0;
      |                             ^~~~~~~~~~~~~~~~
/usr/include/relacy/stdlib/condition_variable.hpp:87:29: error: ‘debug_info_param’ has not been declared
   87 |     virtual void notify_all(debug_info_param info) = 0;
      |                             ^~~~~~~~~~~~~~~~
/usr/include/relacy/stdlib/condition_variable.hpp:88:79: error: ‘debug_info_param’ has not been declared
   88 |     virtual sema_wakeup_reason wait(mutex_wrapper const& lock, bool is_timed, debug_info_param info) = 0;
      |                                                                               ^~~~~~~~~~~~~~~~
/usr/include/relacy/stdlib/condition_variable.hpp:89:91: error: ‘debug_info_param’ has not been declared
   89 |     virtual bool wait(mutex_wrapper const& lock, pred_wrapper const& pred, bool is_timed, debug_info_param info) = 0;
      |                                                                                           ^~~~~~~~~~~~~~~~
/usr/include/relacy/stdlib/condition_variable.hpp:93:10: error: ‘thread_id_t’ has not been declared
   93 | template<thread_id_t thread_count>
      |          ^~~~~~~~~~~
/usr/include/relacy/stdlib/condition_variable.hpp:244:44: error: ‘debug_info_param’ has not been declared
  244 |     void init(bool allow_spurious_wakeups, debug_info_param info)
      |                                            ^~~~~~~~~~~~~~~~
/usr/include/relacy/stdlib/condition_variable.hpp:252:17: error: ‘debug_info_param’ has not been declared
  252 |     void deinit(debug_info_param info)
      |                 ^~~~~~~~~~~~~~~~
/usr/include/relacy/stdlib/condition_variable.hpp:260:21: error: ‘debug_info_param’ has not been declared
  260 |     void notify_one(debug_info_param info)
      |                     ^~~~~~~~~~~~~~~~
/usr/include/relacy/stdlib/condition_variable.hpp:266:21: error: ‘debug_info_param’ has not been declared
  266 |     void notify_all(debug_info_param info)
      |                     ^~~~~~~~~~~~~~~~
/usr/include/relacy/stdlib/condition_variable.hpp:273:58: error: ‘debug_info_param’ has not been declared
  273 |     sema_wakeup_reason wait(lock_t& lock, bool is_timed, debug_info_param info)
      |                                                          ^~~~~~~~~~~~~~~~
/usr/include/relacy/stdlib/condition_variable.hpp:281:83: error: ‘debug_info_param’ has not been declared
  281 |     bool wait(mutex_wrapper const& lock, pred_wrapper const& pred, bool is_timed, debug_info_param info)
      |                                                                                   ^~~~~~~~~~~~~~~~
/usr/include/relacy/stdlib/condition_variable.hpp:291:16: error: ‘debug_info_param’ has not been declared
  291 |     void check(debug_info_param info)
      |                ^~~~~~~~~~~~~~~~
/usr/include/relacy/stdlib/condition_variable.hpp:314:21: error: ‘debug_info_param’ has not been declared
  314 |     void notify_one(debug_info_param info)
      |                     ^~~~~~~~~~~~~~~~
/usr/include/relacy/stdlib/condition_variable.hpp:319:21: error: ‘debug_info_param’ has not been declared
  319 |     void notify_all(debug_info_param info)
      |                     ^~~~~~~~~~~~~~~~
/usr/include/relacy/stdlib/condition_variable.hpp:325:29: error: ‘debug_info_param’ has not been declared
  325 |     void wait(lock_t& lock, debug_info_param info)
      |                             ^~~~~~~~~~~~~~~~
/usr/include/relacy/stdlib/condition_variable.hpp:331:42: error: ‘debug_info_param’ has not been declared
  331 |     void wait(lock_t& lock, pred_t pred, debug_info_param info)
      |                                          ^~~~~~~~~~~~~~~~
/usr/include/relacy/stdlib/condition_variable.hpp:337:54: error: ‘debug_info_param’ has not been declared
  337 |     bool wait_until(lock_t& lock, abs_time_t const&, debug_info_param info)
      |                                                      ^~~~~~~~~~~~~~~~
/usr/include/relacy/stdlib/condition_variable.hpp:343:67: error: ‘debug_info_param’ has not been declared
  343 |     bool wait_until(lock_t& lock, abs_time_t const&, pred_t pred, debug_info_param info)
      |                                                                   ^~~~~~~~~~~~~~~~
/usr/include/relacy/stdlib/condition_variable.hpp:349:52: error: ‘debug_info_param’ has not been declared
  349 |     bool wait_for(lock_t& lock, rel_time_t const&, debug_info_param info)
      |                                                    ^~~~~~~~~~~~~~~~
/usr/include/relacy/stdlib/condition_variable.hpp:356:65: error: ‘debug_info_param’ has not been declared
  356 |     bool wait_for(lock_t& lock, rel_time_t const&, pred_t pred, debug_info_param info)
      |                                                                 ^~~~~~~~~~~~~~~~
/usr/include/relacy/stdlib/condition_variable.hpp: In constructor ‘rl::condition_variable_std<tag_t>::condition_variable_std()’:
/usr/include/relacy/stdlib/condition_variable.hpp:306:36: error: ‘$’ was not declared in this scope
  306 |         condvar<tag_t>::init(true, $);
      |                                    ^
/usr/include/relacy/stdlib/condition_variable.hpp:306:36: note: the macro ‘$’ had not yet been defined
/usr/include/relacy/base.hpp:118: note: it was later defined here
  118 | #define $ RL_INFO
      | 
/usr/include/relacy/stdlib/condition_variable.hpp: In destructor ‘rl::condition_variable_std<tag_t>::~condition_variable_std()’:
/usr/include/relacy/stdlib/condition_variable.hpp:311:32: error: ‘$’ was not declared in this scope
  311 |         condvar<tag_t>::deinit($);
      |                                ^
/usr/include/relacy/stdlib/condition_variable.hpp:311:32: note: the macro ‘$’ had not yet been defined
/usr/include/relacy/base.hpp:118: note: it was later defined here
  118 | #define $ RL_INFO
      | 
In file included from /usr/include/relacy/relacy.hpp:31:
/usr/include/relacy/stdlib/event.hpp: At global scope:
/usr/include/relacy/stdlib/event.hpp:29:22: error: ‘debug_info_param’ has not been declared
   29 |     virtual void set(debug_info_param info) = 0;
      |                      ^~~~~~~~~~~~~~~~
/usr/include/relacy/stdlib/event.hpp:30:24: error: ‘debug_info_param’ has not been declared
   30 |     virtual void reset(debug_info_param info) = 0;
      |                        ^~~~~~~~~~~~~~~~
/usr/include/relacy/stdlib/event.hpp:31:24: error: ‘debug_info_param’ has not been declared
   31 |     virtual void pulse(debug_info_param info) = 0;
      |                        ^~~~~~~~~~~~~~~~
/usr/include/relacy/stdlib/event.hpp:32:67: error: ‘debug_info_param’ has not been declared
   32 |     virtual sema_wakeup_reason wait(bool try_wait, bool is_timed, debug_info_param info) = 0;
      |                                                                   ^~~~~~~~~~~~~~~~
/usr/include/relacy/stdlib/event.hpp:33:30: error: ‘debug_info_param’ has not been declared
   33 |     virtual bool is_signaled(debug_info_param info) = 0;
      |                              ^~~~~~~~~~~~~~~~
/usr/include/relacy/stdlib/event.hpp:34:33: error: ‘debug_info_param’ has not been declared
   34 |     virtual void memory_acquire(debug_info_param info) = 0;
      |                                 ^~~~~~~~~~~~~~~~
/usr/include/relacy/stdlib/event.hpp:35:32: error: ‘debug_info_param’ has not been declared
   35 |     virtual void* prepare_wait(debug_info_param info) = 0;
      |                                ^~~~~~~~~~~~~~~~
/usr/include/relacy/stdlib/event.hpp:42:10: error: ‘thread_id_t’ has not been declared
   42 | template<thread_id_t thread_count>
      |          ^~~~~~~~~~~
/usr/include/relacy/stdlib/event.hpp:310:54: error: ‘debug_info_param’ has not been declared
  310 |     void init(bool manual_reset, bool initial_state, debug_info_param info)
      |                                                      ^~~~~~~~~~~~~~~~
/usr/include/relacy/stdlib/event.hpp:318:17: error: ‘debug_info_param’ has not been declared
  318 |     void deinit(debug_info_param info)
      |                 ^~~~~~~~~~~~~~~~
/usr/include/relacy/stdlib/event.hpp:326:14: error: ‘debug_info_param’ has not been declared
  326 |     void set(debug_info_param info)
      |              ^~~~~~~~~~~~~~~~
/usr/include/relacy/stdlib/event.hpp:332:16: error: ‘debug_info_param’ has not been declared
  332 |     void reset(debug_info_param info)
      |                ^~~~~~~~~~~~~~~~
/usr/include/relacy/stdlib/event.hpp:338:16: error: ‘debug_info_param’ has not been declared
  338 |     void pulse(debug_info_param info)
      |                ^~~~~~~~~~~~~~~~
/usr/include/relacy/stdlib/event.hpp:344:67: error: ‘debug_info_param’ has not been declared
  344 |     virtual sema_wakeup_reason wait(bool try_wait, bool is_timed, debug_info_param info)
      |                                                                   ^~~~~~~~~~~~~~~~
/usr/include/relacy/stdlib/event.hpp:350:25: error: ‘debug_info_param’ has not been declared
  350 |     virtual bool signal(debug_info_param info)
      |                         ^~~~~~~~~~~~~~~~
/usr/include/relacy/stdlib/event.hpp:360:23: error: ‘debug_info_param’ has not been declared
  360 |     event_data* check(debug_info_param info)
      |                       ^~~~~~~~~~~~~~~~
/usr/include/relacy/stdlib/event.hpp:367:30: error: ‘debug_info_param’ has not been declared
  367 |     virtual bool is_signaled(debug_info_param info)
      |                              ^~~~~~~~~~~~~~~~
/usr/include/relacy/stdlib/event.hpp:372:33: error: ‘debug_info_param’ has not been declared
  372 |     virtual void memory_acquire(debug_info_param info)
      |                                 ^~~~~~~~~~~~~~~~
/usr/include/relacy/stdlib/event.hpp:377:32: error: ‘debug_info_param’ has not been declared
  377 |     virtual void* prepare_wait(debug_info_param info)
      |                                ^~~~~~~~~~~~~~~~
/usr/include/relacy/stdlib/event.hpp: In member function ‘void rl::generic_event::init(bool, bool, int)’:
/usr/include/relacy/stdlib/event.hpp:313:9: error: invalid use of incomplete type ‘class rl::context’
  313 |         RL_ASSERT_IMPL(0 == impl_, test_result_double_initialization_of_event, "", info);
      |         ^~~~~~~~~~~~~~
/usr/include/relacy/context_base.hpp:93:7: note: forward declaration of ‘class rl::context’
   93 | class context
      |       ^~~~~~~
/usr/include/relacy/stdlib/event.hpp:315:17: error: invalid use of incomplete type ‘class rl::context’
  315 |         impl_ = c.event_ctor(manual_reset, initial_state);
      |                 ^
/usr/include/relacy/context_base.hpp:93:7: note: forward declaration of ‘class rl::context’
   93 | class context
      |       ^~~~~~~
/usr/include/relacy/stdlib/event.hpp: In member function ‘virtual void rl::generic_event::deinit(int)’:
/usr/include/relacy/stdlib/event.hpp:322:9: error: invalid use of incomplete type ‘class rl::context’
  322 |         c.event_dtor(impl_);
      |         ^
/usr/include/relacy/context_base.hpp:93:7: note: forward declaration of ‘class rl::context’
   93 | class context
      |       ^~~~~~~
/usr/include/relacy/stdlib/event.hpp: In member function ‘rl::event_data* rl::generic_event::check(int)’:
/usr/include/relacy/stdlib/event.hpp:362:9: error: invalid use of incomplete type ‘class rl::context’
  362 |         RL_ASSERT_IMPL(impl_, test_result_usage_of_non_initialized_event, "", info);
      |         ^~~~~~~~~~~~~~
/usr/include/relacy/context_base.hpp:93:7: note: forward declaration of ‘class rl::context’
   93 | class context
      |       ^~~~~~~
In file included from /usr/include/relacy/relacy.hpp:33:
/usr/include/relacy/stdlib/windows.hpp: At global scope:
/usr/include/relacy/stdlib/windows.hpp:35:30: error: ‘debug_info_param’ was not declared in this scope
   35 | inline int rl_SwitchToThread(debug_info_param info)
      |                              ^~~~~~~~~~~~~~~~
/usr/include/relacy/stdlib/windows.hpp:41:50: error: ‘debug_info_param’ has not been declared
   41 | inline void rl_Sleep(unsigned long milliseconds, debug_info_param info)
      |                                                  ^~~~~~~~~~~~~~~~
/usr/include/relacy/stdlib/windows.hpp:48:100: error: ‘debug_info_param’ has not been declared
   48 | inline unsigned long rl_WaitForSingleObjectEx(rl_HANDLE obj, unsigned long timeout, int alertable, debug_info_param info)
      |                                                                                                    ^~~~~~~~~~~~~~~~
/usr/include/relacy/stdlib/windows.hpp: In function ‘long unsigned int rl::rl_WaitForSingleObjectEx(rl_HANDLE, long unsigned int, int, int)’:
/usr/include/relacy/stdlib/windows.hpp:52:5: error: ‘RL_VERIFY’ was not declared in this scope
   52 |     RL_VERIFY(false == alertable && "Alertable wait is not supported in WaitForSingleObject() yet");
      |     ^~~~~~~~~
/usr/include/relacy/stdlib/windows.hpp:52:5: note: the macro ‘RL_VERIFY’ had not yet been defined
/usr/include/relacy/base.hpp:141: note: it was later defined here
  141 | #   define RL_VERIFY(x) (void)0
      | 
/usr/include/relacy/stdlib/windows.hpp: At global scope:
/usr/include/relacy/stdlib/windows.hpp:67:83: error: ‘debug_info_param’ has not been declared
   67 | inline unsigned long rl_WaitForSingleObject(rl_HANDLE obj, unsigned long timeout, debug_info_param info)
      |                                                                                   ^~~~~~~~~~~~~~~~
/usr/include/relacy/stdlib/windows.hpp:72:143: error: ‘debug_info_param’ has not been declared
   72 | inline unsigned long rl_WaitForMultipleObjectsEx(unsigned long count, rl_HANDLE* objects, int wait_all, unsigned long timeout, int alertable, debug_info_param info)
      |                                                                                                                                               ^~~~~~~~~~~~~~~~
/usr/include/relacy/stdlib/windows.hpp: In function ‘long unsigned int rl::rl_WaitForMultipleObjectsEx(long unsigned int, win_object**, int, long unsigned int, int, int)’:
/usr/include/relacy/stdlib/windows.hpp:76:5: error: ‘RL_VERIFY’ was not declared in this scope
   76 |     RL_VERIFY(false == alertable && "Alertable wait is not supported in WaitForMultipleObjects() yet");
      |     ^~~~~~~~~
/usr/include/relacy/stdlib/windows.hpp:76:5: note: the macro ‘RL_VERIFY’ had not yet been defined
/usr/include/relacy/base.hpp:141: note: it was later defined here
  141 | #   define RL_VERIFY(x) (void)0
      | 
/usr/include/relacy/stdlib/windows.hpp: At global scope:
/usr/include/relacy/stdlib/windows.hpp:91:126: error: ‘debug_info_param’ has not been declared
   91 | inline unsigned long rl_WaitForMultipleObjects(unsigned long count, rl_HANDLE* objects, int wait_all, unsigned long timeout, debug_info_param info)
      |                                                                                                                              ^~~~~~~~~~~~~~~~
/usr/include/relacy/stdlib/windows.hpp:100:45: error: ‘debug_info_param’ has not been declared
  100 |                                             debug_info_param info)
      |                                             ^~~~~~~~~~~~~~~~
/usr/include/relacy/stdlib/windows.hpp: In function ‘long unsigned int rl::rl_SignalObjectAndWait(rl_HANDLE, rl_HANDLE, long unsigned int, int, int)’:
/usr/include/relacy/stdlib/windows.hpp:105:29: error: variable ‘rl::preemption_disabler pd’ has initializer but incomplete type
  105 |     preemption_disabler pd (ctx());
      |                             ^~~
/usr/include/relacy/stdlib/windows.hpp: At global scope:
/usr/include/relacy/stdlib/windows.hpp:113:115: error: ‘debug_info_param’ has not been declared
  113 | inline rl_HANDLE rl_CreateSemaphore(void* /*security*/, long initial_count, long max_count, void const* /*name*/, debug_info_param info)
      |                                                                                                                   ^~~~~~~~~~~~~~~~
/usr/include/relacy/stdlib/windows.hpp: In function ‘rl::win_object* rl::rl_CreateSemaphore(void*, long int, long int, const void*, int)’:
/usr/include/relacy/stdlib/windows.hpp:115:20: error: invalid use of incomplete type ‘class rl::context’
  115 |     void* mem = ctx().alloc(sizeof(semaphore<sem_tag_win>), false, info);
      |                 ~~~^~
/usr/include/relacy/context_base.hpp:93:7: note: forward declaration of ‘class rl::context’
   93 | class context
      |       ^~~~~~~
/usr/include/relacy/stdlib/windows.hpp: At global scope:
/usr/include/relacy/stdlib/windows.hpp:121:40: error: ‘debug_info_param’ has not been declared
  121 | inline int rl_CloseHandle(rl_HANDLE h, debug_info_param info)
      |                                        ^~~~~~~~~~~~~~~~
/usr/include/relacy/stdlib/windows.hpp: In function ‘int rl::rl_CloseHandle(rl_HANDLE, int)’:
/usr/include/relacy/stdlib/windows.hpp:125:9: error: invalid use of incomplete type ‘class rl::context’
  125 |     (ctx().free)(h, false, info); //!!! rename free because of the define
      |      ~~~^~
/usr/include/relacy/context_base.hpp:93:7: note: forward declaration of ‘class rl::context’
   93 | class context
      |       ^~~~~~~
/usr/include/relacy/stdlib/windows.hpp: At global scope:
/usr/include/relacy/stdlib/windows.hpp:129:78: error: ‘debug_info_param’ has not been declared
  129 | inline int rl_ReleaseSemaphore(rl_HANDLE sema, long count, long* prev_count, debug_info_param info)
      |                                                                              ^~~~~~~~~~~~~~~~
/usr/include/relacy/stdlib/windows.hpp:141:112: error: ‘debug_info_param’ has not been declared
  141 | inline rl_HANDLE rl_CreateEvent(void* /*security*/, int manual_reset, int initial_state, void const* /*name*/, debug_info_param info)
      |                                                                                                                ^~~~~~~~~~~~~~~~
/usr/include/relacy/stdlib/windows.hpp: In function ‘rl::win_object* rl::rl_CreateEvent(void*, int, int, const void*, int)’:
/usr/include/relacy/stdlib/windows.hpp:143:20: error: invalid use of incomplete type ‘class rl::context’
  143 |     void* mem = ctx().alloc(sizeof(generic_event), false, info);
      |                 ~~~^~
/usr/include/relacy/context_base.hpp:93:7: note: forward declaration of ‘class rl::context’
   93 | class context
      |       ^~~~~~~
/usr/include/relacy/stdlib/windows.hpp: At global scope:
/usr/include/relacy/stdlib/windows.hpp:149:38: error: ‘debug_info_param’ has not been declared
  149 | inline int rl_SetEvent(rl_HANDLE ev, debug_info_param info)
      |                                      ^~~~~~~~~~~~~~~~
/usr/include/relacy/stdlib/windows.hpp:155:40: error: ‘debug_info_param’ has not been declared
  155 | inline int rl_ResetEvent(rl_HANDLE ev, debug_info_param info)
      |                                        ^~~~~~~~~~~~~~~~
/usr/include/relacy/stdlib/windows.hpp:161:40: error: ‘debug_info_param’ has not been declared
  161 | inline int rl_PulseEvent(rl_HANDLE ev, debug_info_param info)
      |                                        ^~~~~~~~~~~~~~~~
/usr/include/relacy/stdlib/windows.hpp:172:66: error: ‘debug_info_param’ has not been declared
  172 | inline void rl_InitializeCriticalSection(rl_CRITICAL_SECTION* m, debug_info_param info)
      |                                                                  ^~~~~~~~~~~~~~~~
/usr/include/relacy/stdlib/windows.hpp:177:103: error: ‘debug_info_param’ has not been declared
  177 | inline int rl_InitializeCriticalSectionAndSpinCount(rl_CRITICAL_SECTION* m, unsigned long spin_count, debug_info_param info)
      |                                                                                                       ^~~~~~~~~~~~~~~~
/usr/include/relacy/stdlib/windows.hpp:184:114: error: ‘debug_info_param’ has not been declared
  184 | inline int rl_InitializeCriticalSectionEx(rl_CRITICAL_SECTION* m, unsigned long spin_count, unsigned long flags, debug_info_param info)
      |                                                                                                                  ^~~~~~~~~~~~~~~~
/usr/include/relacy/stdlib/windows.hpp:192:62: error: ‘debug_info_param’ has not been declared
  192 | inline void rl_DeleteCriticalSection(rl_CRITICAL_SECTION* m, debug_info_param info)
      |                                                              ^~~~~~~~~~~~~~~~
/usr/include/relacy/stdlib/windows.hpp:197:61: error: ‘debug_info_param’ has not been declared
  197 | inline void rl_EnterCriticalSection(rl_CRITICAL_SECTION* m, debug_info_param info)
      |                                                             ^~~~~~~~~~~~~~~~
/usr/include/relacy/stdlib/windows.hpp:202:63: error: ‘debug_info_param’ has not been declared
  202 | inline int rl_TryEnterCriticalSection(rl_CRITICAL_SECTION* m, debug_info_param info)
      |                                                               ^~~~~~~~~~~~~~~~
/usr/include/relacy/stdlib/windows.hpp:207:61: error: ‘debug_info_param’ has not been declared
  207 | inline void rl_LeaveCriticalSection(rl_CRITICAL_SECTION* m, debug_info_param info)
      |                                                             ^~~~~~~~~~~~~~~~
/usr/include/relacy/stdlib/windows.hpp:215:52: error: ‘debug_info_param’ has not been declared
  215 | inline void rl_InitializeSRWLock(rl_SRWLOCK* lock, debug_info_param info)
      |                                                    ^~~~~~~~~~~~~~~~
/usr/include/relacy/stdlib/windows.hpp:220:58: error: ‘debug_info_param’ has not been declared
  220 | inline void rl_AcquireSRWLockExclusive(rl_SRWLOCK* lock, debug_info_param info)
      |                                                          ^~~~~~~~~~~~~~~~
/usr/include/relacy/stdlib/windows.hpp:225:55: error: ‘debug_info_param’ has not been declared
  225 | inline void rl_AcquireSRWLockShared(rl_SRWLOCK* lock, debug_info_param info)
      |                                                       ^~~~~~~~~~~~~~~~
/usr/include/relacy/stdlib/windows.hpp:230:58: error: ‘debug_info_param’ has not been declared
  230 | inline void rl_ReleaseSRWLockExclusive(rl_SRWLOCK* lock, debug_info_param info)
      |                                                          ^~~~~~~~~~~~~~~~
/usr/include/relacy/stdlib/windows.hpp:235:55: error: ‘debug_info_param’ has not been declared
  235 | inline void rl_ReleaseSRWLockShared(rl_SRWLOCK* lock, debug_info_param info)
      |                                                       ^~~~~~~~~~~~~~~~
/usr/include/relacy/stdlib/windows.hpp:241:48: error: ‘debug_info_param’ has not been declared
  241 | inline void rl_DeleteSRWLock(rl_SRWLOCK* lock, debug_info_param info)
      |                                                ^~~~~~~~~~~~~~~~
/usr/include/relacy/stdlib/windows.hpp:251:94: error: ‘debug_info_param’ has not been declared
  251 | inline rl_HANDLE rl_CreateMutex(void* /*security*/, int initial_owner, void const* /*name*/, debug_info_param info)
      |                                                                                              ^~~~~~~~~~~~~~~~
/usr/include/relacy/stdlib/windows.hpp: In function ‘rl::win_object* rl::rl_CreateMutex(void*, int, const void*, int)’:
/usr/include/relacy/stdlib/windows.hpp:253:20: error: invalid use of incomplete type ‘class rl::context’
  253 |     void* mem = ctx().alloc(sizeof(rl_win_mutex), false, info);
      |                 ~~~^~
/usr/include/relacy/context_base.hpp:93:7: note: forward declaration of ‘class rl::context’
   93 | class context
      |       ^~~~~~~
/usr/include/relacy/stdlib/windows.hpp: At global scope:
/usr/include/relacy/stdlib/windows.hpp:261:43: error: ‘debug_info_param’ has not been declared
  261 | inline int rl_ReleaseMutex(rl_HANDLE mtx, debug_info_param info)
      |                                           ^~~~~~~~~~~~~~~~
/usr/include/relacy/stdlib/windows.hpp:274:71: error: ‘debug_info_param’ has not been declared
  274 | inline void rl_InitializeConditionVariable(rl_CONDITION_VARIABLE* cv, debug_info_param info)
      |                                                                       ^~~~~~~~~~~~~~~~
/usr/include/relacy/stdlib/windows.hpp:279:110: error: ‘debug_info_param’ has not been declared
  279 | inline int rl_SleepConditionVariableCS(rl_CONDITION_VARIABLE* cv, rl_CRITICAL_SECTION* cs, unsigned long ms, debug_info_param info)
      |                                                                                                              ^~~~~~~~~~~~~~~~
/usr/include/relacy/stdlib/windows.hpp:285:125: error: ‘debug_info_param’ has not been declared
  285 | inline int rl_SleepConditionVariableSRW(rl_CONDITION_VARIABLE* cv, rl_SRWLOCK* lock, unsigned long ms, unsigned long flags, debug_info_param info)
      |                                                                                                                             ^~~~~~~~~~~~~~~~
/usr/include/relacy/stdlib/windows.hpp:293:68: error: ‘debug_info_param’ has not been declared
  293 | inline void rl_WakeAllConditionVariable(rl_CONDITION_VARIABLE* cv, debug_info_param info)
      |                                                                    ^~~~~~~~~~~~~~~~
/usr/include/relacy/stdlib/windows.hpp:298:65: error: ‘debug_info_param’ has not been declared
  298 | inline void rl_WakeConditionVariable(rl_CONDITION_VARIABLE* cv, debug_info_param info)
      |                                                                 ^~~~~~~~~~~~~~~~
/usr/include/relacy/stdlib/windows.hpp:303:67: error: ‘debug_info_param’ has not been declared
  303 | inline void rl_DeleteConditionVariable(rl_CONDITION_VARIABLE* cv, debug_info_param info)
      |                                                                   ^~~~~~~~~~~~~~~~
/usr/include/relacy/stdlib/windows.hpp:313:34: error: expected ‘)’ before ‘*’ token
  313 | typedef unsigned long (RL_STDCALL *rl_WIN_START_ROUTINE)(void* param);
      |                       ~          ^~
      |                                  )
/usr/include/relacy/stdlib/windows.hpp:314:29: error: expected ‘)’ before ‘*’ token
  314 | typedef unsigned (RL_STDCALL *rl_MSVCR_THREAD_ROUTINE)(void* param);
      |                  ~          ^~
      |                             )
/usr/include/relacy/stdlib/windows.hpp: In static member function ‘static void* rl::win32_thread_helper<thread_fn_t>::thread(void*)’:
/usr/include/relacy/stdlib/windows.hpp:326:27: error: ‘$’ was not declared in this scope
  326 |         delete_impl(self, $);
      |                           ^
/usr/include/relacy/stdlib/windows.hpp:326:27: note: the macro ‘$’ had not yet been defined
/usr/include/relacy/base.hpp:118: note: it was later defined here
  118 | #define $ RL_INFO
      | 
/usr/include/relacy/stdlib/windows.hpp: At global scope:
/usr/include/relacy/stdlib/windows.hpp:331:71: error: ‘rl_WIN_START_ROUTINE’ has not been declared
  331 | inline rl_HANDLE rl_CreateThread(void* security, unsigned stack_size, rl_WIN_START_ROUTINE fn, void* param, unsigned long creation_flags, unsigned long* thread_id, debug_info_param info)
      |                                                                       ^~~~~~~~~~~~~~~~~~~~
/usr/include/relacy/stdlib/windows.hpp:331:165: error: ‘debug_info_param’ has not been declared
  331 | inline rl_HANDLE rl_CreateThread(void* security, unsigned stack_size, rl_WIN_START_ROUTINE fn, void* param, unsigned long creation_flags, unsigned long* thread_id, debug_info_param info)
      |                                                                                                                                                                     ^~~~~~~~~~~~~~~~
/usr/include/relacy/stdlib/windows.hpp: In function ‘rl::win_object* rl::rl_CreateThread(void*, unsigned int, int, void*, long unsigned int, long unsigned int*, int)’:
/usr/include/relacy/stdlib/windows.hpp:339:12: error: invalid use of incomplete type ‘class rl::context’
  339 |         ctx().alloc(sizeof(win32_thread_helper<rl_WIN_START_ROUTINE>), false, info);
      |         ~~~^~
/usr/include/relacy/context_base.hpp:93:7: note: forward declaration of ‘class rl::context’
   93 | class context
      |       ^~~~~~~
/usr/include/relacy/stdlib/windows.hpp:339:48: error: ‘rl_WIN_START_ROUTINE’ was not declared in this scope
  339 |         ctx().alloc(sizeof(win32_thread_helper<rl_WIN_START_ROUTINE>), false, info);
      |                                                ^~~~~~~~~~~~~~~~~~~~
/usr/include/relacy/stdlib/windows.hpp:339:68: error: template argument 1 is invalid
  339 |         ctx().alloc(sizeof(win32_thread_helper<rl_WIN_START_ROUTINE>), false, info);
      |                                                                    ^
/usr/include/relacy/stdlib/windows.hpp:342:10: error: request for member ‘fn’ in ‘* arg’, which is of non-class type ‘int’
  342 |     arg->fn = fn;
      |          ^~
/usr/include/relacy/stdlib/windows.hpp:343:10: error: request for member ‘param’ in ‘* arg’, which is of non-class type ‘int’
  343 |     arg->param = param;
      |          ^~~~~
/usr/include/relacy/stdlib/windows.hpp:344:38: error: invalid use of incomplete type ‘class rl::context’
  344 |     win_waitable_object* handle = ctx().create_thread(&win32_thread_helper<rl_WIN_START_ROUTINE>::thread, arg);
      |                                   ~~~^~
/usr/include/relacy/context_base.hpp:93:7: note: forward declaration of ‘class rl::context’
   93 | class context
      |       ^~~~~~~
/usr/include/relacy/stdlib/windows.hpp: At global scope:
/usr/include/relacy/stdlib/windows.hpp:349:72: error: ‘rl_MSVCR_THREAD_ROUTINE’ has not been declared
  349 | inline uintptr_t rl_beginthreadex(void *security, unsigned stack_size, rl_MSVCR_THREAD_ROUTINE start_address, void *arglist, unsigned initflag, unsigned* thrdaddr, debug_info_param info)
      |                                                                        ^~~~~~~~~~~~~~~~~~~~~~~
/usr/include/relacy/stdlib/windows.hpp:349:165: error: ‘debug_info_param’ has not been declared
  349 | inline uintptr_t rl_beginthreadex(void *security, unsigned stack_size, rl_MSVCR_THREAD_ROUTINE start_address, void *arglist, unsigned initflag, unsigned* thrdaddr, debug_info_param info)
      |                                                                                                                                                                     ^~~~~~~~~~~~~~~~
/usr/include/relacy/stdlib/windows.hpp: In function ‘uintptr_t rl::rl_beginthreadex(void*, unsigned int, int, void*, unsigned int, unsigned int*, int)’:
/usr/include/relacy/stdlib/windows.hpp:356:20: error: invalid use of incomplete type ‘class rl::context’
  356 |     void* mem = ctx().alloc(sizeof(win32_thread_helper<rl_MSVCR_THREAD_ROUTINE>), false, info);
      |                 ~~~^~
/usr/include/relacy/context_base.hpp:93:7: note: forward declaration of ‘class rl::context’
   93 | class context
      |       ^~~~~~~
/usr/include/relacy/stdlib/windows.hpp:356:56: error: ‘rl_MSVCR_THREAD_ROUTINE’ was not declared in this scope
  356 |     void* mem = ctx().alloc(sizeof(win32_thread_helper<rl_MSVCR_THREAD_ROUTINE>), false, info);
      |                                                        ^~~~~~~~~~~~~~~~~~~~~~~
/usr/include/relacy/stdlib/windows.hpp:356:79: error: template argument 1 is invalid
  356 |     void* mem = ctx().alloc(sizeof(win32_thread_helper<rl_MSVCR_THREAD_ROUTINE>), false, info);
      |                                                                               ^
/usr/include/relacy/stdlib/windows.hpp:359:10: error: request for member ‘fn’ in ‘* arg’, which is of non-class type ‘int’
  359 |     arg->fn = start_address;
      |          ^~
/usr/include/relacy/stdlib/windows.hpp:360:10: error: request for member ‘param’ in ‘* arg’, which is of non-class type ‘int’
  360 |     arg->param = arglist;
      |          ^~~~~
/usr/include/relacy/stdlib/windows.hpp:361:38: error: invalid use of incomplete type ‘class rl::context’
  361 |     win_waitable_object* handle = ctx().create_thread(&win32_thread_helper<rl_MSVCR_THREAD_ROUTINE>::thread, arg);
      |                                   ~~~^~
/usr/include/relacy/context_base.hpp:93:7: note: forward declaration of ‘class rl::context’
   93 | class context
      |       ^~~~~~~
/usr/include/relacy/stdlib/windows.hpp: At global scope:
/usr/include/relacy/stdlib/windows.hpp:365:90: error: ‘debug_info_param’ has not been declared
  365 | inline unsigned long rl_SetThreadAffinityMask(rl_HANDLE th, unsigned long affinity_mask, debug_info_param info)
      |                                                                                          ^~~~~~~~~~~~~~~~
/usr/include/relacy/stdlib/windows.hpp:373:43: error: ‘debug_info_param’ has not been declared
  373 | inline int rl_SuspendThread(rl_HANDLE th, debug_info_param info)
      |                                           ^~~~~~~~~~~~~~~~
/usr/include/relacy/stdlib/windows.hpp:380:42: error: ‘debug_info_param’ has not been declared
  380 | inline int rl_ResumeThread(rl_HANDLE th, debug_info_param info)
      |                                          ^~~~~~~~~~~~~~~~
/usr/include/relacy/stdlib/windows.hpp:397:13: error: variable or field ‘rl_FlushProcessWriteBuffers’ declared void
  397 | inline void rl_FlushProcessWriteBuffers(debug_info_param info)
      |             ^~~~~~~~~~~~~~~~~~~~~~~~~~~
/usr/include/relacy/stdlib/windows.hpp:397:41: error: ‘debug_info_param’ was not declared in this scope
  397 | inline void rl_FlushProcessWriteBuffers(debug_info_param info)
      |                                         ^~~~~~~~~~~~~~~~
In file included from /usr/include/relacy/relacy.hpp:34:
/usr/include/relacy/stdlib/pthread.hpp:36:13: error: variable or field ‘rl_sched_yield’ declared void
   36 | inline void rl_sched_yield(debug_info_param info)
      |             ^~~~~~~~~~~~~~
/usr/include/relacy/stdlib/pthread.hpp:36:28: error: ‘debug_info_param’ was not declared in this scope
   36 | inline void rl_sched_yield(debug_info_param info)
      |                            ^~~~~~~~~~~~~~~~
/usr/include/relacy/stdlib/pthread.hpp:45:107: error: ‘debug_info_param’ has not been declared
   45 | inline int rl_pthread_create(rl_pthread_t* th, rl_pthread_attr_t* attr, void* (*func) (void*), void* arg, debug_info_param info)
      |                                                                                                           ^~~~~~~~~~~~~~~~
/usr/include/relacy/stdlib/pthread.hpp: In function ‘int rl::rl_pthread_create(win_waitable_object**, void**, void* (*)(void*), void*, int)’:
/usr/include/relacy/stdlib/pthread.hpp:49:5: error: ‘RL_VERIFY’ was not declared in this scope
   49 |     RL_VERIFY(th && func);
      |     ^~~~~~~~~
/usr/include/relacy/stdlib/pthread.hpp:49:5: note: the macro ‘RL_VERIFY’ had not yet been defined
/usr/include/relacy/base.hpp:141: note: it was later defined here
  141 | #   define RL_VERIFY(x) (void)0
      | 
/usr/include/relacy/stdlib/pthread.hpp:50:16: error: invalid use of incomplete type ‘class rl::context’
   50 |     th[0] = ctx().create_thread(func, arg);
      |             ~~~^~
/usr/include/relacy/context_base.hpp:93:7: note: forward declaration of ‘class rl::context’
   93 | class context
      |       ^~~~~~~
/usr/include/relacy/stdlib/pthread.hpp: At global scope:
/usr/include/relacy/stdlib/pthread.hpp:54:57: error: ‘debug_info_param’ has not been declared
   54 | inline int rl_pthread_join(rl_pthread_t th, void** res, debug_info_param info)
      |                                                         ^~~~~~~~~~~~~~~~
/usr/include/relacy/stdlib/pthread.hpp: In function ‘int rl::rl_pthread_join(rl_pthread_t, void**, int)’:
/usr/include/relacy/stdlib/pthread.hpp:56:5: error: ‘RL_VERIFY’ was not declared in this scope
   56 |     RL_VERIFY(th && res);
      |     ^~~~~~~~~
/usr/include/relacy/stdlib/pthread.hpp:56:5: note: the macro ‘RL_VERIFY’ had not yet been defined
/usr/include/relacy/base.hpp:141: note: it was later defined here
  141 | #   define RL_VERIFY(x) (void)0
      | 
/usr/include/relacy/stdlib/pthread.hpp: At global scope:
/usr/include/relacy/stdlib/pthread.hpp:68:85: error: ‘debug_info_param’ has not been declared
   68 | inline int rl_sem_init(rl_sem_t* sema, int /*pshared*/, unsigned int initial_count, debug_info_param info)
      |                                                                                     ^~~~~~~~~~~~~~~~
/usr/include/relacy/stdlib/pthread.hpp: In function ‘int rl::rl_sem_init(rl_sem_t*, int, unsigned int, int)’:
/usr/include/relacy/stdlib/pthread.hpp:70:5: error: ‘RL_VERIFY’ was not declared in this scope
   70 |     RL_VERIFY(initial_count >= 0);
      |     ^~~~~~~~~
/usr/include/relacy/stdlib/pthread.hpp:70:5: note: the macro ‘RL_VERIFY’ had not yet been defined
/usr/include/relacy/base.hpp:141: note: it was later defined here
  141 | #   define RL_VERIFY(x) (void)0
      | 
/usr/include/relacy/stdlib/pthread.hpp: At global scope:
/usr/include/relacy/stdlib/pthread.hpp:75:43: error: ‘debug_info_param’ has not been declared
   75 | inline int rl_sem_destroy(rl_sem_t* sema, debug_info_param info)
      |                                           ^~~~~~~~~~~~~~~~
/usr/include/relacy/stdlib/pthread.hpp:81:40: error: ‘debug_info_param’ has not been declared
   81 | inline int rl_sem_wait(rl_sem_t* sema, debug_info_param info)
      |                                        ^~~~~~~~~~~~~~~~
/usr/include/relacy/stdlib/pthread.hpp: In function ‘int rl::rl_sem_wait(rl_sem_t*, int)’:
/usr/include/relacy/stdlib/pthread.hpp:91:5: error: ‘RL_VERIFY’ was not declared in this scope
   91 |     RL_VERIFY(false);
      |     ^~~~~~~~~
/usr/include/relacy/stdlib/pthread.hpp:91:5: note: the macro ‘RL_VERIFY’ had not yet been defined
/usr/include/relacy/base.hpp:141: note: it was later defined here
  141 | #   define RL_VERIFY(x) (void)0
      | 
/usr/include/relacy/stdlib/pthread.hpp: At global scope:
/usr/include/relacy/stdlib/pthread.hpp:95:43: error: ‘debug_info_param’ has not been declared
   95 | inline int rl_sem_trywait(rl_sem_t* sema, debug_info_param info)
      |                                           ^~~~~~~~~~~~~~~~
/usr/include/relacy/stdlib/pthread.hpp: In function ‘int rl::rl_sem_trywait(rl_sem_t*, int)’:
/usr/include/relacy/stdlib/pthread.hpp:110:5: error: ‘RL_VERIFY’ was not declared in this scope
  110 |     RL_VERIFY(false);
      |     ^~~~~~~~~
/usr/include/relacy/stdlib/pthread.hpp:110:5: note: the macro ‘RL_VERIFY’ had not yet been defined
/usr/include/relacy/base.hpp:141: note: it was later defined here
  141 | #   define RL_VERIFY(x) (void)0
      | 
/usr/include/relacy/stdlib/pthread.hpp: At global scope:
/usr/include/relacy/stdlib/pthread.hpp:114:40: error: ‘debug_info_param’ has not been declared
  114 | inline int rl_sem_post(rl_sem_t* sema, debug_info_param info)
      |                                        ^~~~~~~~~~~~~~~~
/usr/include/relacy/stdlib/pthread.hpp: In function ‘int rl::rl_sem_post(rl_sem_t*, int)’:
/usr/include/relacy/stdlib/pthread.hpp:118:5: error: ‘RL_VERIFY’ was not declared in this scope
  118 |     RL_VERIFY(result);
      |     ^~~~~~~~~
/usr/include/relacy/stdlib/pthread.hpp:118:5: note: the macro ‘RL_VERIFY’ had not yet been defined
/usr/include/relacy/base.hpp:141: note: it was later defined here
  141 | #   define RL_VERIFY(x) (void)0
      | 
/usr/include/relacy/stdlib/pthread.hpp: At global scope:
/usr/include/relacy/stdlib/pthread.hpp:123:56: error: ‘debug_info_param’ has not been declared
  123 | inline int rl_sem_getvalue(rl_sem_t* sema, int* value, debug_info_param info)
      |                                                        ^~~~~~~~~~~~~~~~
/usr/include/relacy/stdlib/pthread.hpp: In function ‘int rl::rl_sem_getvalue(rl_sem_t*, int*, int)’:
/usr/include/relacy/stdlib/pthread.hpp:125:5: error: ‘RL_VERIFY’ was not declared in this scope
  125 |     RL_VERIFY(value);
      |     ^~~~~~~~~
/usr/include/relacy/stdlib/pthread.hpp:125:5: note: the macro ‘RL_VERIFY’ had not yet been defined
/usr/include/relacy/base.hpp:141: note: it was later defined here
  141 | #   define RL_VERIFY(x) (void)0
      | 
/usr/include/relacy/stdlib/pthread.hpp: At global scope:
/usr/include/relacy/stdlib/pthread.hpp:150:68: error: ‘debug_info_param’ has not been declared
  150 | inline int rl_pthread_mutexattr_init(rl_pthread_mutexattr_t* attr, debug_info_param info)
      |                                                                    ^~~~~~~~~~~~~~~~
/usr/include/relacy/stdlib/pthread.hpp:159:71: error: ‘debug_info_param’ has not been declared
  159 | inline int rl_pthread_mutexattr_destroy(rl_pthread_mutexattr_t* attr, debug_info_param info)
      |                                                                       ^~~~~~~~~~~~~~~~
/usr/include/relacy/stdlib/pthread.hpp:167:81: error: ‘debug_info_param’ has not been declared
  167 | inline int rl_pthread_mutexattr_settype(rl_pthread_mutexattr_t* attr, int type, debug_info_param info)
      |                                                                                 ^~~~~~~~~~~~~~~~
/usr/include/relacy/stdlib/pthread.hpp:177:93: error: ‘debug_info_param’ has not been declared
  177 | inline int rl_pthread_mutex_init(rl_pthread_mutex_t* m, rl_pthread_mutexattr_t const* attr, debug_info_param info)
      |                                                                                             ^~~~~~~~~~~~~~~~
/usr/include/relacy/stdlib/pthread.hpp:184:60: error: ‘debug_info_param’ has not been declared
  184 | inline int rl_pthread_mutex_destroy(rl_pthread_mutex_t* m, debug_info_param info)
      |                                                            ^~~~~~~~~~~~~~~~
/usr/include/relacy/stdlib/pthread.hpp:190:57: error: ‘debug_info_param’ has not been declared
  190 | inline int rl_pthread_mutex_lock(rl_pthread_mutex_t* m, debug_info_param info)
      |                                                         ^~~~~~~~~~~~~~~~
/usr/include/relacy/stdlib/pthread.hpp:196:87: error: ‘debug_info_param’ has not been declared
  196 | inline int rl_pthread_mutex_timedlock(rl_pthread_mutex_t* m, const void* abs_timeout, debug_info_param info)
      |                                                                                       ^~~~~~~~~~~~~~~~
/usr/include/relacy/stdlib/pthread.hpp:203:61: error: ‘debug_info_param’ has not been declared
  203 | inline int rl_pthread_mutex_try_lock(rl_pthread_mutex_t* m, debug_info_param info)
      |                                                             ^~~~~~~~~~~~~~~~
/usr/include/relacy/stdlib/pthread.hpp:208:59: error: ‘debug_info_param’ has not been declared
  208 | inline int rl_pthread_mutex_unlock(rl_pthread_mutex_t* m, debug_info_param info)
      |                                                           ^~~~~~~~~~~~~~~~
/usr/include/relacy/stdlib/pthread.hpp:219:84: error: ‘debug_info_param’ has not been declared
  219 | inline int rl_pthread_rwlock_init(rl_pthread_rwlock_t* lock, void const* /*attr*/, debug_info_param info)
      |                                                                                    ^~~~~~~~~~~~~~~~
/usr/include/relacy/stdlib/pthread.hpp:225:65: error: ‘debug_info_param’ has not been declared
  225 | inline int rl_pthread_rwlock_destroy(rl_pthread_rwlock_t* lock, debug_info_param info)
      |                                                                 ^~~~~~~~~~~~~~~~
/usr/include/relacy/stdlib/pthread.hpp:231:64: error: ‘debug_info_param’ has not been declared
  231 | inline int rl_pthread_rwlock_rdlock(rl_pthread_rwlock_t* lock, debug_info_param info)
      |                                                                ^~~~~~~~~~~~~~~~
/usr/include/relacy/stdlib/pthread.hpp:237:67: error: ‘debug_info_param’ has not been declared
  237 | inline int rl_pthread_rwlock_tryrdlock(rl_pthread_rwlock_t* lock, debug_info_param info)
      |                                                                   ^~~~~~~~~~~~~~~~
/usr/include/relacy/stdlib/pthread.hpp:243:64: error: ‘debug_info_param’ has not been declared
  243 | inline int rl_pthread_rwlock_wrlock(rl_pthread_rwlock_t* lock, debug_info_param info)
      |                                                                ^~~~~~~~~~~~~~~~
/usr/include/relacy/stdlib/pthread.hpp:249:67: error: ‘debug_info_param’ has not been declared
  249 | inline int rl_pthread_rwlock_trywrlock(rl_pthread_rwlock_t* lock, debug_info_param info)
      |                                                                   ^~~~~~~~~~~~~~~~
/usr/include/relacy/stdlib/pthread.hpp:255:64: error: ‘debug_info_param’ has not been declared
  255 | inline int rl_pthread_rwlock_unlock(rl_pthread_rwlock_t* lock, debug_info_param info)
      |                                                                ^~~~~~~~~~~~~~~~
/usr/include/relacy/stdlib/pthread.hpp:268:93: error: ‘debug_info_param’ has not been declared
  268 | inline int rl_pthread_cond_init(rl_pthread_cond_t* cv, rl_pthread_condattr_t* /*condattr*/, debug_info_param info)
      |                                                                                             ^~~~~~~~~~~~~~~~
/usr/include/relacy/stdlib/pthread.hpp:274:59: error: ‘debug_info_param’ has not been declared
  274 | inline int rl_pthread_cond_destroy(rl_pthread_cond_t* cv, debug_info_param info)
      |                                                           ^~~~~~~~~~~~~~~~
/usr/include/relacy/stdlib/pthread.hpp:280:61: error: ‘debug_info_param’ has not been declared
  280 | inline int rl_pthread_cond_broadcast(rl_pthread_cond_t* cv, debug_info_param info)
      |                                                             ^~~~~~~~~~~~~~~~
/usr/include/relacy/stdlib/pthread.hpp:286:58: error: ‘debug_info_param’ has not been declared
  286 | inline int rl_pthread_cond_signal(rl_pthread_cond_t* cv, debug_info_param info)
      |                                                          ^~~~~~~~~~~~~~~~
/usr/include/relacy/stdlib/pthread.hpp:292:110: error: ‘debug_info_param’ has not been declared
  292 | inline int rl_pthread_cond_timedwait(rl_pthread_cond_t* cv, rl_pthread_mutex_t* m, void const* /*timespec*/, debug_info_param info)
      |                                                                                                              ^~~~~~~~~~~~~~~~
/usr/include/relacy/stdlib/pthread.hpp:305:79: error: ‘debug_info_param’ has not been declared
  305 | inline int rl_pthread_cond_wait(rl_pthread_cond_t* cv, rl_pthread_mutex_t* m, debug_info_param info)
      |                                                                               ^~~~~~~~~~~~~~~~
/usr/include/relacy/stdlib/pthread.hpp:332:21: error: ‘debug_info_param’ has not been declared
  332 |                     debug_info_param info)
      |                     ^~~~~~~~~~~~~~~~
/usr/include/relacy/stdlib/pthread.hpp: In function ‘int rl::rl_int_futex_impl(context&, atomic<int>*, int, int, const timespec*, atomic<int>*, int, int)’:
/usr/include/relacy/stdlib/pthread.hpp:338:9: error: invalid use of incomplete type ‘class rl::context’
  338 |         c.sched();
      |         ^
/usr/include/relacy/context_base.hpp:93:7: note: forward declaration of ‘class rl::context’
   93 | class context
      |       ^~~~~~~
/usr/include/relacy/stdlib/pthread.hpp:339:9: error: invalid use of incomplete type ‘class rl::context’
  339 |         c.atomic_thread_fence_seq_cst();
      |         ^
/usr/include/relacy/context_base.hpp:93:7: note: forward declaration of ‘class rl::context’
   93 | class context
      |       ^~~~~~~
/usr/include/relacy/stdlib/pthread.hpp:342:38: error: variable ‘rl::preemption_disabler pd’ has initializer but incomplete type
  342 |             preemption_disabler pd (c);
      |                                      ^
/usr/include/relacy/stdlib/pthread.hpp:343:23: error: invalid use of incomplete type ‘class rl::atomic<int>’
  343 |             v0 = uaddr->load(mo_acquire, info);
      |                       ^~
/usr/include/relacy/atomic_events.hpp:24:28: note: declaration of ‘class rl::atomic<int>’
   24 | template<typename T> class atomic;
      |                            ^~~~~~
/usr/include/relacy/stdlib/pthread.hpp:347:9: error: ‘unpark_reason’ was not declared in this scope
  347 |         unpark_reason reason = uaddr->wait(c, timeout != 0, true, info);
      |         ^~~~~~~~~~~~~
/usr/include/relacy/stdlib/pthread.hpp:348:13: error: ‘reason’ was not declared in this scope
  348 |         if (reason == unpark_reason_normal)
      |             ^~~~~~
/usr/include/relacy/stdlib/pthread.hpp:348:23: error: ‘unpark_reason_normal’ was not declared in this scope
  348 |         if (reason == unpark_reason_normal)
      |                       ^~~~~~~~~~~~~~~~~~~~
/usr/include/relacy/stdlib/pthread.hpp:350:28: error: ‘unpark_reason_timeout’ was not declared in this scope; did you mean ‘sema_wakeup_reason_timeout’?
  350 |         else if (reason == unpark_reason_timeout)
      |                            ^~~~~~~~~~~~~~~~~~~~~
      |                            sema_wakeup_reason_timeout
/usr/include/relacy/stdlib/pthread.hpp:352:28: error: ‘unpark_reason_spurious’ was not declared in this scope; did you mean ‘sema_wakeup_reason_spurious’?
  352 |         else if (reason == unpark_reason_spurious)
      |                            ^~~~~~~~~~~~~~~~~~~~~~
      |                            sema_wakeup_reason_spurious
/usr/include/relacy/stdlib/pthread.hpp:354:9: error: ‘RL_VERIFY’ was not declared in this scope
  354 |         RL_VERIFY(false);
      |         ^~~~~~~~~
/usr/include/relacy/stdlib/pthread.hpp:354:9: note: the macro ‘RL_VERIFY’ had not yet been defined
/usr/include/relacy/base.hpp:141: note: it was later defined here
  141 | #   define RL_VERIFY(x) (void)0
      | 
/usr/include/relacy/stdlib/pthread.hpp:362:9: error: invalid use of incomplete type ‘class rl::context’
  362 |         c.sched();
      |         ^
/usr/include/relacy/context_base.hpp:93:7: note: forward declaration of ‘class rl::context’
   93 | class context
      |       ^~~~~~~
/usr/include/relacy/stdlib/pthread.hpp:363:9: error: invalid use of incomplete type ‘class rl::context’
  363 |         c.atomic_thread_fence_seq_cst();
      |         ^
/usr/include/relacy/context_base.hpp:93:7: note: forward declaration of ‘class rl::context’
   93 | class context
      |       ^~~~~~~
/usr/include/relacy/stdlib/pthread.hpp:364:21: error: invalid use of incomplete type ‘class rl::atomic<int>’
  364 |         return uaddr->wake(c, val, info);
      |                     ^~
/usr/include/relacy/atomic_events.hpp:24:28: note: declaration of ‘class rl::atomic<int>’
   24 | template<typename T> class atomic;
      |                            ^~~~~~
/usr/include/relacy/stdlib/pthread.hpp: In member function ‘void rl::futex_event::output(std::ostream&) const’:
/usr/include/relacy/stdlib/pthread.hpp:382:30: error: ‘hex’ is not a member of ‘std’
  382 |             s << "<" << std::hex << addr_ << std::dec << "> futex("
      |                              ^~~
/usr/include/relacy/stdlib/pthread.hpp:382:51: error: ‘dec’ is not a member of ‘std’
  382 |             s << "<" << std::hex << addr_ << std::dec << "> futex("
      |                                                   ^~~
/usr/include/relacy/stdlib/pthread.hpp: At global scope:
/usr/include/relacy/stdlib/pthread.hpp:398:21: error: ‘debug_info_param’ has not been declared
  398 |                     debug_info_param info)
      |                     ^~~~~~~~~~~~~~~~
/usr/include/relacy/stdlib/pthread.hpp: In function ‘int rl::rl_futex(atomic<int>*, int, int, const timespec*, atomic<int>*, int, int)’:
/usr/include/relacy/stdlib/pthread.hpp:402:5: error: invalid use of incomplete type ‘class rl::context’
  402 |     RL_HIST(futex_event) {uaddr, op, val, timeout != 0, res} RL_HIST_END();
      |     ^~~~~~~
/usr/include/relacy/context_base.hpp:93:7: note: forward declaration of ‘class rl::context’
   93 | class context
      |       ^~~~~~~
/usr/include/relacy/stdlib/pthread.hpp:402:5: error: ‘debug_info’ is not a member of ‘rl’
  402 |     RL_HIST(futex_event) {uaddr, op, val, timeout != 0, res} RL_HIST_END();
      |     ^~~~~~~
/usr/include/relacy/stdlib/pthread.hpp:402:62: error: invalid use of incomplete type ‘class rl::context’
  402 |     RL_HIST(futex_event) {uaddr, op, val, timeout != 0, res} RL_HIST_END();
      |                                                              ^~~~~~~~~~~
/usr/include/relacy/context_base.hpp:93:7: note: forward declaration of ‘class rl::context’
   93 | class context
      |       ^~~~~~~
/usr/include/relacy/stdlib/pthread.hpp:402:62: error: ‘rl_info_c’ was not declared in this scope
  402 |     RL_HIST(futex_event) {uaddr, op, val, timeout != 0, res} RL_HIST_END();
      |                                                              ^~~~~~~~~~~
/usr/include/arm-linux-gnueabihf/c++/12/bits/gthr-default.h: In function ‘int __gthread_create(rl::win_waitable_object**, void* (*)(void*), void*)’:
/usr/include/arm-linux-gnueabihf/c++/12/bits/gthr-default.h:663:10: error: ‘$’ was not declared in this scope
  663 |   return __gthrw_(pthread_create) (__threadid, NULL, __func, __args);
      |          ^~~~~~~~
/usr/include/arm-linux-gnueabihf/c++/12/bits/gthr-default.h:663:10: note: the macro ‘$’ had not yet been defined
/usr/include/relacy/base.hpp:118: note: it was later defined here
  118 | #define $ RL_INFO
      | 
/usr/include/arm-linux-gnueabihf/c++/12/bits/gthr-default.h: In function ‘int __gthread_join(__gthread_t, void**)’:
/usr/include/arm-linux-gnueabihf/c++/12/bits/gthr-default.h:669:10: error: ‘$’ was not declared in this scope
  669 |   return __gthrw_(pthread_join) (__threadid, __value_ptr);
      |          ^~~~~~~~
/usr/include/arm-linux-gnueabihf/c++/12/bits/gthr-default.h:669:10: note: the macro ‘$’ had not yet been defined
/usr/include/relacy/base.hpp:118: note: it was later defined here
  118 | #define $ RL_INFO
      | 
/usr/include/arm-linux-gnueabihf/c++/12/bits/gthr-default.h: In function ‘int __gthread_detach(__gthread_t)’:
/usr/include/arm-linux-gnueabihf/c++/12/bits/gthr-default.h:675:10: error: ‘pthread_detach’ was not declared in this scope; did you mean ‘pthread_t’?
  675 |   return __gthrw_(pthread_detach) (__threadid);
      |          ^~~~~~~~
/usr/include/arm-linux-gnueabihf/c++/12/bits/gthr-default.h: In function ‘int __gthread_equal(__gthread_t, __gthread_t)’:
/usr/include/arm-linux-gnueabihf/c++/12/bits/gthr-default.h:681:10: error: ‘pthread_equal’ was not declared in this scope; did you mean ‘thread_local’?
  681 |   return __gthrw_(pthread_equal) (__t1, __t2);
      |          ^~~~~~~~
/usr/include/arm-linux-gnueabihf/c++/12/bits/gthr-default.h: In function ‘rl::win_waitable_object* __gthread_self()’:
/usr/include/arm-linux-gnueabihf/c++/12/bits/gthr-default.h:687:10: error: ‘pthread_self’ was not declared in this scope; did you mean ‘pthread_yield’?
  687 |   return __gthrw_(pthread_self) ();
      |          ^~~~~~~~
/usr/include/arm-linux-gnueabihf/c++/12/bits/gthr-default.h: In function ‘int __gthread_yield()’:
/usr/include/arm-linux-gnueabihf/c++/12/bits/gthr-default.h:693:10: error: ‘rl_sched_yield’ is not a member of ‘rl’
  693 |   return __gthrw_(sched_yield) ();
      |          ^~~~~~~~
/usr/include/arm-linux-gnueabihf/c++/12/bits/gthr-default.h:693:10: error: ‘$’ was not declared in this scope
  693 |   return __gthrw_(sched_yield) ();
      |          ^~~~~~~~
/usr/include/arm-linux-gnueabihf/c++/12/bits/gthr-default.h:693:10: note: the macro ‘$’ had not yet been defined
/usr/include/relacy/base.hpp:118: note: it was later defined here
  118 | #define $ RL_INFO
      | 
/usr/include/arm-linux-gnueabihf/c++/12/bits/gthr-default.h: In function ‘int __gthread_once(__gthread_once_t*, void (*)())’:
/usr/include/arm-linux-gnueabihf/c++/12/bits/gthr-default.h:700:12: error: ‘pthread_once’ was not declared in this scope; did you mean ‘pthread_once_t’?
  700 |     return __gthrw_(pthread_once) (__once, __func);
      |            ^~~~~~~~
/usr/include/arm-linux-gnueabihf/c++/12/bits/gthr-default.h: In function ‘int __gthread_key_create(__gthread_key_t*, void (*)(void*))’:
/usr/include/arm-linux-gnueabihf/c++/12/bits/gthr-default.h:708:10: error: ‘pthread_key_create’ was not declared in this scope; did you mean ‘pthread_create’?
  708 |   return __gthrw_(pthread_key_create) (__key, __dtor);
      |          ^~~~~~~~
/usr/include/arm-linux-gnueabihf/c++/12/bits/gthr-default.h: In function ‘int __gthread_key_delete(__gthread_key_t)’:
/usr/include/arm-linux-gnueabihf/c++/12/bits/gthr-default.h:714:10: error: ‘pthread_key_delete’ was not declared in this scope; did you mean ‘pthread_key_t’?
  714 |   return __gthrw_(pthread_key_delete) (__key);
      |          ^~~~~~~~
/usr/include/arm-linux-gnueabihf/c++/12/bits/gthr-default.h: In function ‘void* __gthread_getspecific(__gthread_key_t)’:
/usr/include/arm-linux-gnueabihf/c++/12/bits/gthr-default.h:720:10: error: ‘pthread_getspecific’ was not declared in this scope
  720 |   return __gthrw_(pthread_getspecific) (__key);
      |          ^~~~~~~~
/usr/include/arm-linux-gnueabihf/c++/12/bits/gthr-default.h: In function ‘int __gthread_setspecific(__gthread_key_t, const void*)’:
/usr/include/arm-linux-gnueabihf/c++/12/bits/gthr-default.h:726:10: error: ‘pthread_setspecific’ was not declared in this scope
  726 |   return __gthrw_(pthread_setspecific) (__key, __ptr);
      |          ^~~~~~~~
/usr/include/arm-linux-gnueabihf/c++/12/bits/gthr-default.h: In function ‘void __gthread_mutex_init_function(__gthread_mutex_t*)’:
/usr/include/arm-linux-gnueabihf/c++/12/bits/gthr-default.h:733:5: error: ‘$’ was not declared in this scope
  733 |     __gthrw_(pthread_mutex_init) (__mutex, NULL);
      |     ^~~~~~~~
/usr/include/arm-linux-gnueabihf/c++/12/bits/gthr-default.h:733:5: note: the macro ‘$’ had not yet been defined
/usr/include/relacy/base.hpp:118: note: it was later defined here
  118 | #define $ RL_INFO
      | 
/usr/include/arm-linux-gnueabihf/c++/12/bits/gthr-default.h: In function ‘int __gthread_mutex_destroy(__gthread_mutex_t*)’:
/usr/include/arm-linux-gnueabihf/c++/12/bits/gthr-default.h:740:12: error: ‘$’ was not declared in this scope
  740 |     return __gthrw_(pthread_mutex_destroy) (__mutex);
      |            ^~~~~~~~
/usr/include/arm-linux-gnueabihf/c++/12/bits/gthr-default.h:740:12: note: the macro ‘$’ had not yet been defined
/usr/include/relacy/base.hpp:118: note: it was later defined here
  118 | #define $ RL_INFO
      | 
/usr/include/arm-linux-gnueabihf/c++/12/bits/gthr-default.h: In function ‘int __gthread_mutex_lock(__gthread_mutex_t*)’:
/usr/include/arm-linux-gnueabihf/c++/12/bits/gthr-default.h:749:12: error: ‘$’ was not declared in this scope
  749 |     return __gthrw_(pthread_mutex_lock) (__mutex);
      |            ^~~~~~~~
/usr/include/arm-linux-gnueabihf/c++/12/bits/gthr-default.h:749:12: note: the macro ‘$’ had not yet been defined
/usr/include/relacy/base.hpp:118: note: it was later defined here
  118 | #define $ RL_INFO
      | 
/usr/include/arm-linux-gnueabihf/c++/12/bits/gthr-default.h: In function ‘int __gthread_mutex_trylock(__gthread_mutex_t*)’:
/usr/include/arm-linux-gnueabihf/c++/12/bits/gthr-default.h:758:12: error: ‘pthread_mutex_trylock’ was not declared in this scope; did you mean ‘pthread_mutex_try_lock’?
  758 |     return __gthrw_(pthread_mutex_trylock) (__mutex);
      |            ^~~~~~~~
/usr/include/arm-linux-gnueabihf/c++/12/bits/gthr-default.h: In function ‘int __gthread_mutex_timedlock(__gthread_mutex_t*, const __gthread_time_t*)’:
/usr/include/arm-linux-gnueabihf/c++/12/bits/gthr-default.h:769:12: error: ‘$’ was not declared in this scope
  769 |     return __gthrw_(pthread_mutex_timedlock) (__mutex, __abs_timeout);
      |            ^~~~~~~~
/usr/include/arm-linux-gnueabihf/c++/12/bits/gthr-default.h:769:12: note: the macro ‘$’ had not yet been defined
/usr/include/relacy/base.hpp:118: note: it was later defined here
  118 | #define $ RL_INFO
      | 
/usr/include/arm-linux-gnueabihf/c++/12/bits/gthr-default.h: In function ‘int __gthread_mutex_unlock(__gthread_mutex_t*)’:
/usr/include/arm-linux-gnueabihf/c++/12/bits/gthr-default.h:779:12: error: ‘$’ was not declared in this scope
  779 |     return __gthrw_(pthread_mutex_unlock) (__mutex);
      |            ^~~~~~~~
/usr/include/arm-linux-gnueabihf/c++/12/bits/gthr-default.h:779:12: note: the macro ‘$’ had not yet been defined
/usr/include/relacy/base.hpp:118: note: it was later defined here
  118 | #define $ RL_INFO
      | 
/usr/include/arm-linux-gnueabihf/c++/12/bits/gthr-default.h: In function ‘int __gthread_recursive_mutex_init_function(__gthread_recursive_mutex_t*)’:
/usr/include/arm-linux-gnueabihf/c++/12/bits/gthr-default.h:794:13: error: ‘$’ was not declared in this scope
  794 |       __r = __gthrw_(pthread_mutexattr_init) (&__attr);
      |             ^~~~~~~~
/usr/include/arm-linux-gnueabihf/c++/12/bits/gthr-default.h:794:13: note: the macro ‘$’ had not yet been defined
/usr/include/relacy/base.hpp:118: note: it was later defined here
  118 | #define $ RL_INFO
      | 
/usr/include/arm-linux-gnueabihf/c++/12/bits/gthr-default.h: In function ‘int __gthread_cond_broadcast(__gthread_cond_t*)’:
/usr/include/arm-linux-gnueabihf/c++/12/bits/gthr-default.h:853:10: error: ‘$’ was not declared in this scope
  853 |   return __gthrw_(pthread_cond_broadcast) (__cond);
      |          ^~~~~~~~
/usr/include/arm-linux-gnueabihf/c++/12/bits/gthr-default.h:853:10: note: the macro ‘$’ had not yet been defined
/usr/include/relacy/base.hpp:118: note: it was later defined here
  118 | #define $ RL_INFO
      | 
/usr/include/arm-linux-gnueabihf/c++/12/bits/gthr-default.h: In function ‘int __gthread_cond_signal(__gthread_cond_t*)’:
/usr/include/arm-linux-gnueabihf/c++/12/bits/gthr-default.h:859:10: error: ‘$’ was not declared in this scope
  859 |   return __gthrw_(pthread_cond_signal) (__cond);
      |          ^~~~~~~~
/usr/include/arm-linux-gnueabihf/c++/12/bits/gthr-default.h:859:10: note: the macro ‘$’ had not yet been defined
/usr/include/relacy/base.hpp:118: note: it was later defined here
  118 | #define $ RL_INFO
      | 
/usr/include/arm-linux-gnueabihf/c++/12/bits/gthr-default.h: In function ‘int __gthread_cond_wait(__gthread_cond_t*, __gthread_mutex_t*)’:
/usr/include/arm-linux-gnueabihf/c++/12/bits/gthr-default.h:865:10: error: ‘$’ was not declared in this scope
  865 |   return __gthrw_(pthread_cond_wait) (__cond, __mutex);
      |          ^~~~~~~~
/usr/include/arm-linux-gnueabihf/c++/12/bits/gthr-default.h:865:10: note: the macro ‘$’ had not yet been defined
/usr/include/relacy/base.hpp:118: note: it was later defined here
  118 | #define $ RL_INFO
      | 
/usr/include/arm-linux-gnueabihf/c++/12/bits/gthr-default.h: In function ‘int __gthread_cond_timedwait(__gthread_cond_t*, __gthread_mutex_t*, const __gthread_time_t*)’:
/usr/include/arm-linux-gnueabihf/c++/12/bits/gthr-default.h:872:10: error: ‘$’ was not declared in this scope
  872 |   return __gthrw_(pthread_cond_timedwait) (__cond, __mutex, __abs_timeout);
      |          ^~~~~~~~
/usr/include/arm-linux-gnueabihf/c++/12/bits/gthr-default.h:872:10: note: the macro ‘$’ had not yet been defined
/usr/include/relacy/base.hpp:118: note: it was later defined here
  118 | #define $ RL_INFO
      | 
/usr/include/arm-linux-gnueabihf/c++/12/bits/gthr-default.h: In function ‘int __gthread_cond_destroy(__gthread_cond_t*)’:
/usr/include/arm-linux-gnueabihf/c++/12/bits/gthr-default.h:885:10: error: ‘$’ was not declared in this scope
  885 |   return __gthrw_(pthread_cond_destroy) (__cond);
      |          ^~~~~~~~
/usr/include/arm-linux-gnueabihf/c++/12/bits/gthr-default.h:885:10: note: the macro ‘$’ had not yet been defined
/usr/include/relacy/base.hpp:118: note: it was later defined here
  118 | #define $ RL_INFO
      | 
/usr/include/c++/12/bits/new_allocator.h: In member function ‘_Tp* std::__new_allocator<_Tp>::allocate(size_type, const void*)’:
/usr/include/c++/12/bits/new_allocator.h:133:38: error: expected operator before ‘rl’
  133 |             return static_cast<_Tp*>(_GLIBCXX_OPERATOR_NEW(__n * sizeof(_Tp),
      |                                      ^~~~~~~~~~~~~~~~~~~~~
/usr/include/c++/12/bits/new_allocator.h:133:38: error: expected ‘)’ before ‘rl’
/usr/include/c++/12/bits/new_allocator.h:133:38: error: expected ‘;’ before ‘rl’
/usr/include/c++/12/bits/new_allocator.h:133:38: error: ‘$’ was not declared in this scope
  133 |             return static_cast<_Tp*>(_GLIBCXX_OPERATOR_NEW(__n * sizeof(_Tp),
      |                                      ^~~~~~~~~~~~~~~~~~~~~
/usr/include/c++/12/bits/new_allocator.h:133:38: note: the macro ‘$’ had not yet been defined
/usr/include/relacy/base.hpp:118: note: it was later defined here
  118 | #define $ RL_INFO
      | 
In file included from /usr/include/arm-linux-gnueabihf/c++/12/bits/c++allocator.h:33,
                 from /usr/include/c++/12/bits/allocator.h:46,
                 from /usr/include/c++/12/string:41,
                 from /usr/include/c++/12/bits/locale_classes.h:40,
                 from /usr/include/c++/12/bits/ios_base.h:41:
/usr/include/c++/12/bits/new_allocator.h:134:65: error: expected type-specifier before ‘)’ token
  134 |                                                            __al));
      |                                                                 ^
/usr/include/c++/12/bits/new_allocator.h:137:34: error: expected operator before ‘rl’
  137 |         return static_cast<_Tp*>(_GLIBCXX_OPERATOR_NEW(__n * sizeof(_Tp)));
      |                                  ^~~~~~~~~~~~~~~~~~~~~
/usr/include/c++/12/bits/new_allocator.h:137:34: error: expected ‘)’ before ‘rl’
/usr/include/c++/12/bits/new_allocator.h:137:34: error: expected ‘;’ before ‘rl’
/usr/include/c++/12/bits/new_allocator.h:137:34: error: ‘$’ was not declared in this scope
  137 |         return static_cast<_Tp*>(_GLIBCXX_OPERATOR_NEW(__n * sizeof(_Tp)));
      |                                  ^~~~~~~~~~~~~~~~~~~~~
/usr/include/c++/12/bits/new_allocator.h:137:34: note: the macro ‘$’ had not yet been defined
/usr/include/relacy/base.hpp:118: note: it was later defined here
  118 | #define $ RL_INFO
      | 
/usr/include/c++/12/bits/new_allocator.h:137:74: error: expected type-specifier before ‘)’ token
  137 |         return static_cast<_Tp*>(_GLIBCXX_OPERATOR_NEW(__n * sizeof(_Tp)));
      |                                                                          ^
/usr/include/c++/12/bits/new_allocator.h: In member function ‘void std::__new_allocator<_Tp>::deallocate(_Tp*, size_type)’:
/usr/include/c++/12/bits/new_allocator.h:153:13: error: expected operator before ‘rl’
  153 |             _GLIBCXX_OPERATOR_DELETE(_GLIBCXX_SIZED_DEALLOC(__p, __n),
      |             ^~~~~~~~~~~~~~~~~~~~~~~~
/usr/include/c++/12/bits/new_allocator.h:158:9: error: expected operator before ‘rl’
  158 |         _GLIBCXX_OPERATOR_DELETE(_GLIBCXX_SIZED_DEALLOC(__p, __n));
      |         ^~~~~~~~~~~~~~~~~~~~~~~~
/usr/include/c++/12/bits/new_allocator.h: In member function ‘void std::__new_allocator<_Tp>::construct(_Up*, _Args&& ...)’:
/usr/include/c++/12/bits/new_allocator.h:175:13: error: ‘$’ was not declared in this scope
  175 |         { ::new((void *)__p) _Up(std::forward<_Args>(__args)...); }
      |             ^~~
/usr/include/c++/12/bits/new_allocator.h:175:13: note: the macro ‘$’ had not yet been defined
/usr/include/relacy/base.hpp:118: note: it was later defined here
  118 | #define $ RL_INFO
      | 
/usr/include/c++/12/bits/stl_iterator_base_funcs.h: At global scope:
/usr/include/c++/12/bits/stl_iterator_base_funcs.h:127:73: error: invalid pure specifier (only ‘= 0’ is allowed) before ‘::’ token
  127 |     __distance(_OutputIterator, _OutputIterator, output_iterator_tag) = delete;
      |                                                                         ^~~~~~
/usr/include/c++/12/bits/stl_iterator_base_funcs.h:201:67: error: invalid pure specifier (only ‘= 0’ is allowed) before ‘::’ token
  201 |     __advance(_OutputIterator&, _Distance, output_iterator_tag) = delete;
      |                                                                   ^~~~~~
/usr/include/c++/12/bits/stl_pair.h:170:50: error: invalid pure specifier (only ‘= 0’ is allowed) before ‘::’ token
  170 |     __pair_base& operator=(const __pair_base&) = delete;
      |                                                  ^~~~~~
/usr/include/c++/12/bits/stl_pair.h:470:48: error: invalid pure specifier (only ‘= 0’ is allowed) before ‘::’ token
  470 |         __zero_as_null_pointer_constant(_Tp) = delete;
      |                                                ^~~~~~
/usr/include/c++/12/bits/stl_pair.h:715:46: error: invalid pure specifier (only ‘= 0’ is allowed) before ‘::’ token
  715 |     swap(pair<_T1, _T2>&, pair<_T1, _T2>&) = delete;
      |                                              ^~~~~~
/usr/include/c++/12/bits/refwrap.h:315:35: error: invalid pure specifier (only ‘= 0’ is allowed) before ‘::’ token
  315 |       static void _S_fun(_Tp&&) = delete;
      |                                   ^~~~~~
In file included from /usr/include/c++/12/string:51:
/usr/include/c++/12/bits/refwrap.h:315:19: error: initializer specified for static member function ‘static void std::reference_wrapper<_Tp>::_S_fun(_Tp&&)’
  315 |       static void _S_fun(_Tp&&) = delete;
      |                   ^~~~~~
/usr/include/c++/12/bits/refwrap.h:384:29: error: invalid pure specifier (only ‘= 0’ is allowed) before ‘::’ token
  384 |     void ref(const _Tp&&) = delete;
      |                             ^~~~~~
/usr/include/c++/12/bits/refwrap.h:387:30: error: invalid pure specifier (only ‘= 0’ is allowed) before ‘::’ token
  387 |     void cref(const _Tp&&) = delete;
      |                              ^~~~~~
/usr/include/c++/12/bits/stl_construct.h: In function ‘void std::_Construct(_Tp*, _Args&& ...)’:
/usr/include/c++/12/bits/stl_construct.h:119:9: error: ‘$’ was not declared in this scope
  119 |       ::new((void*)__p) _Tp(std::forward<_Args>(__args)...);
      |         ^~~
/usr/include/c++/12/bits/stl_construct.h:119:9: note: the macro ‘$’ had not yet been defined
/usr/include/relacy/base.hpp:118: note: it was later defined here
  118 | #define $ RL_INFO
      | 
/usr/include/c++/12/bits/stl_construct.h: In function ‘void std::_Construct_novalue(_T1*)’:
/usr/include/c++/12/bits/stl_construct.h:135:9: error: ‘$’ was not declared in this scope
  135 |     { ::new((void*)__p) _T1; }
      |         ^~~
/usr/include/c++/12/bits/stl_construct.h:135:9: note: the macro ‘$’ had not yet been defined
/usr/include/relacy/base.hpp:118: note: it was later defined here
  118 | #define $ RL_INFO
      | 
/usr/include/c++/12/bits/alloc_traits.h: In static member function ‘static constexpr std::_Require<std::__and_<std::__not_<typename std::allocator_traits< <template-parameter-1-1> >::__construct_helper<_Tp, _Args>::type>, std::is_constructible<_Tp, _Args ...> > > std::allocator_traits< <template-parameter-1-1> >::_S_construct(_Alloc&, _Tp*, _Args&& ...)’:
/usr/include/c++/12/bits/alloc_traits.h:261:13: error: ‘$’ was not declared in this scope
  261 |           ::new((void*)__p) _Tp(std::forward<_Args>(__args)...);
      |             ^~~
/usr/include/c++/12/bits/alloc_traits.h:261:13: note: the macro ‘$’ had not yet been defined
/usr/include/relacy/base.hpp:118: note: it was later defined here
  118 | #define $ RL_INFO
      | 
/usr/include/c++/12/bits/alloc_traits.h: At global scope:
/usr/include/c++/12/bits/alloc_traits.h:614:69: error: invalid pure specifier (only ‘= 0’ is allowed) before ‘::’ token
  614 |       allocate(allocator_type&, size_type, const void* = nullptr) = delete;
      |                                                                     ^~~~~~
In file included from /usr/include/c++/12/ext/alloc_traits.h:34,
                 from /usr/include/c++/12/bits/basic_string.h:39,
                 from /usr/include/c++/12/string:53:
/usr/include/c++/12/bits/alloc_traits.h:614:7: error: initializer specified for static member function ‘static void* std::allocator_traits<std::allocator<void> >::allocate(allocator_type&, size_type, const void*)’
  614 |       allocate(allocator_type&, size_type, const void* = nullptr) = delete;
      |       ^~~~~~~~
/usr/include/c++/12/bits/alloc_traits.h:618:55: error: invalid pure specifier (only ‘= 0’ is allowed) before ‘::’ token
  618 |       deallocate(allocator_type&, void*, size_type) = delete;
      |                                                       ^~~~~~
/usr/include/c++/12/bits/alloc_traits.h:618:7: error: initializer specified for static member function ‘static void std::allocator_traits<std::allocator<void> >::deallocate(allocator_type&, void*, size_type)’
  618 |       deallocate(allocator_type&, void*, size_type) = delete;
      |       ^~~~~~~~~~
/usr/include/c++/12/bits/alloc_traits.h:652:41: error: invalid pure specifier (only ‘= 0’ is allowed) before ‘::’ token
  652 |       max_size(const allocator_type&) = delete;
      |                                         ^~~~~~
/usr/include/c++/12/bits/alloc_traits.h:652:7: error: initializer specified for static member function ‘static std::allocator_traits<std::allocator<void> >::size_type std::allocator_traits<std::allocator<void> >::max_size(const allocator_type&)’
  652 |       max_size(const allocator_type&) = delete;
      |       ^~~~~~~~
/usr/include/c++/12/bits/locale_classes.h:440:27: error: invalid pure specifier (only ‘= 0’ is allowed) before ‘::’ token
  440 |     facet(const facet&) = delete;
      |                           ^~~~~~
/usr/include/c++/12/bits/locale_classes.h:443:31: error: invalid pure specifier (only ‘= 0’ is allowed) before ‘::’ token
  443 |     operator=(const facet&) = delete;
      |                               ^~~~~~
/usr/include/c++/12/bits/locale_classes.h: In member function ‘void std::locale::facet::_M_remove_reference() const’:
/usr/include/c++/12/bits/locale_classes.h:460:15: error: expected unqualified-id before ‘delete’
  460 |             { delete this; }
      |               ^~~~~~
/usr/include/c++/12/bits/locale_classes.h: In member function ‘void std::locale::_Impl::_M_remove_reference()’:
/usr/include/c++/12/bits/locale_classes.h:570:15: error: expected unqualified-id before ‘delete’
  570 |             { delete this; }
      |               ^~~~~~
/usr/include/c++/12/bits/locale_classes.tcc: In constructor ‘std::locale::locale(const std::locale&, _Facet*)’:
/usr/include/c++/12/bits/locale_classes.tcc:47:17: error: ‘$’ was not declared in this scope
   47 |       _M_impl = new _Impl(*__other._M_impl, 1);
      |                 ^~~
/usr/include/c++/12/bits/locale_classes.tcc:47:17: note: the macro ‘$’ had not yet been defined
/usr/include/relacy/base.hpp:118: note: it was later defined here
  118 | #define $ RL_INFO
      | 
/usr/include/c++/12/bits/locale_classes.tcc:56:7: error: expected unqualified-id before ‘delete’
   56 |       delete [] _M_impl->_M_names[0];
      |       ^~~~~~
/usr/include/c++/12/bits/locale_classes.tcc: In member function ‘std::locale std::locale::combine(const std::locale&) const’:
/usr/include/c++/12/bits/locale_classes.tcc:65:22: error: ‘$’ was not declared in this scope
   65 |       _Impl* __tmp = new _Impl(*_M_impl, 1);
      |                      ^~~
/usr/include/c++/12/bits/locale_classes.tcc:65:22: note: the macro ‘$’ had not yet been defined
/usr/include/relacy/base.hpp:118: note: it was later defined here
  118 | #define $ RL_INFO
      | 
/usr/include/c++/12/bits/locale_classes.tcc: In member function ‘virtual std::__cxx11::collate<_CharT>::string_type std::__cxx11::collate<_CharT>::do_transform(const _CharT*, const _CharT*) const’:
/usr/include/c++/12/bits/locale_classes.tcc:212:21: error: ‘$’ was not declared in this scope
  212 |       _CharT* __c = new _CharT[__len];
      |                     ^~~
/usr/include/c++/12/bits/locale_classes.tcc:212:21: note: the macro ‘$’ had not yet been defined
/usr/include/relacy/base.hpp:118: note: it was later defined here
  118 | #define $ RL_INFO
      | 
/usr/include/c++/12/bits/locale_classes.tcc:228:19: error: expected unqualified-id before ‘delete’
  228 |                   delete [] __c, __c = 0;
      |                   ^~~~~~
/usr/include/c++/12/bits/locale_classes.tcc:244:11: error: expected unqualified-id before ‘delete’
  244 |           delete [] __c;
      |           ^~~~~~
/usr/include/c++/12/bits/locale_classes.tcc:248:7: error: expected unqualified-id before ‘delete’
  248 |       delete [] __c;
      |       ^~~~~~
/usr/include/c++/12/system_error: At global scope:
/usr/include/c++/12/system_error:104:45: error: invalid pure specifier (only ‘= 0’ is allowed) before ‘::’ token
  104 |     error_category(const error_category&) = delete;
      |                                             ^~~~~~
/usr/include/c++/12/system_error:105:56: error: invalid pure specifier (only ‘= 0’ is allowed) before ‘::’ token
  105 |     error_category& operator=(const error_category&) = delete;
      |                                                        ^~~~~~
/usr/include/c++/12/bits/ios_base.h:900:33: error: invalid pure specifier (only ‘= 0’ is allowed) before ‘::’ token
  900 |     ios_base(const ios_base&) = delete;
      |                                 ^~~~~~
/usr/include/c++/12/bits/ios_base.h:903:34: error: invalid pure specifier (only ‘= 0’ is allowed) before ‘::’ token
  903 |     operator=(const ios_base&) = delete;
      |                                  ^~~~~~
/usr/include/c++/12/bits/locale_facets.h: In destructor ‘std::__numpunct_cache<_CharT>::~__numpunct_cache()’:
/usr/include/c++/12/bits/locale_facets.h:1655:11: error: expected unqualified-id before ‘delete’
 1655 |           delete [] _M_grouping;
      |           ^~~~~~
/usr/include/c++/12/bits/locale_facets.h:1656:11: error: redeclaration of ‘rl::delete_proxy $’
 1656 |           delete [] _M_truename;
      |           ^~~~~~
/usr/include/c++/12/bits/locale_facets.h:1655:11: note: ‘rl::delete_proxy $’ previously declared here
 1655 |           delete [] _M_grouping;
      |           ^~~~~~
/usr/include/c++/12/bits/locale_facets.h:1656:11: error: expected unqualified-id before ‘delete’
 1656 |           delete [] _M_truename;
      |           ^~~~~~
/usr/include/c++/12/bits/locale_facets.h:1657:11: error: redeclaration of ‘rl::delete_proxy $’
 1657 |           delete [] _M_falsename;
      |           ^~~~~~
/usr/include/c++/12/bits/locale_facets.h:1655:11: note: ‘rl::delete_proxy $’ previously declared here
 1655 |           delete [] _M_grouping;
      |           ^~~~~~
/usr/include/c++/12/bits/locale_facets.h:1657:11: error: expected unqualified-id before ‘delete’
 1657 |           delete [] _M_falsename;
      |           ^~~~~~
/usr/include/c++/12/bits/locale_facets.tcc: In member function ‘const std::__numpunct_cache<_CharT>* std::__use_cache<std::__numpunct_cache<_CharT> >::operator()(const std::locale&) const’:
/usr/include/c++/12/bits/locale_facets.tcc:62:25: error: ‘$’ was not declared in this scope
   62 |                 __tmp = new __numpunct_cache<_CharT>;
      |                         ^~~
/usr/include/c++/12/bits/locale_facets.tcc:62:25: note: the macro ‘$’ had not yet been defined
/usr/include/relacy/base.hpp:118: note: it was later defined here
  118 | #define $ RL_INFO
      | 
/usr/include/c++/12/bits/locale_facets.tcc:67:17: error: expected unqualified-id before ‘delete’
   67 |                 delete __tmp;
      |                 ^~~~~~
/usr/include/c++/12/bits/locale_facets.tcc: In member function ‘void std::__numpunct_cache<_CharT>::_M_cache(const std::locale&)’:
/usr/include/c++/12/bits/locale_facets.tcc:89:24: error: ‘$’ was not declared in this scope
   89 |           __grouping = new char[_M_grouping_size];
      |                        ^~~
/usr/include/c++/12/bits/locale_facets.tcc:89:24: note: the macro ‘$’ had not yet been defined
/usr/include/relacy/base.hpp:118: note: it was later defined here
  118 | #define $ RL_INFO
      | 
/usr/include/c++/12/bits/locale_facets.tcc:124:11: error: expected unqualified-id before ‘delete’
  124 |           delete [] __grouping;
      |           ^~~~~~
/usr/include/c++/12/bits/locale_facets.tcc:125:11: error: redeclaration of ‘rl::delete_proxy $’
  125 |           delete [] __truename;
      |           ^~~~~~
/usr/include/c++/12/bits/locale_facets.tcc:124:11: note: ‘rl::delete_proxy $’ previously declared here
  124 |           delete [] __grouping;
      |           ^~~~~~
/usr/include/c++/12/bits/locale_facets.tcc:125:11: error: expected unqualified-id before ‘delete’
  125 |           delete [] __truename;
      |           ^~~~~~
/usr/include/c++/12/bits/locale_facets.tcc:126:11: error: redeclaration of ‘rl::delete_proxy $’
  126 |           delete [] __falsename;
      |           ^~~~~~
/usr/include/c++/12/bits/locale_facets.tcc:124:11: note: ‘rl::delete_proxy $’ previously declared here
  124 |           delete [] __grouping;
      |           ^~~~~~
/usr/include/c++/12/bits/locale_facets.tcc:126:11: error: expected unqualified-id before ‘delete’
  126 |           delete [] __falsename;
      |           ^~~~~~
/usr/include/c++/12/bits/basic_ios.h: At global scope:
/usr/include/c++/12/bits/basic_ios.h:475:37: error: invalid pure specifier (only ‘= 0’ is allowed) before ‘::’ token
  475 |       basic_ios(const basic_ios&) = delete;
      |                                     ^~~~~~
/usr/include/c++/12/bits/basic_ios.h:476:48: error: invalid pure specifier (only ‘= 0’ is allowed) before ‘::’ token
  476 |       basic_ios& operator=(const basic_ios&) = delete;
      |                                                ^~~~~~
/usr/include/c++/12/bits/basic_ios.tcc: In member function ‘std::basic_ios<_CharT, _Traits>& std::basic_ios<_CharT, _Traits>::copyfmt(const std::basic_ios<_CharT, _Traits>&)’:
/usr/include/c++/12/bits/basic_ios.tcc:74:46: error: ‘$’ was not declared in this scope
   74 |                              _M_local_word : new _Words[__rhs._M_word_size];
      |                                              ^~~
/usr/include/c++/12/bits/basic_ios.tcc:74:46: note: the macro ‘$’ had not yet been defined
/usr/include/relacy/base.hpp:118: note: it was later defined here
  118 | #define $ RL_INFO
      | 
/usr/include/c++/12/bits/basic_ios.tcc:83:15: error: expected unqualified-id before ‘delete’
   83 |               delete [] _M_word;
      |               ^~~~~~
/usr/include/c++/12/ostream: At global scope:
/usr/include/c++/12/ostream:391:45: error: invalid pure specifier (only ‘= 0’ is allowed) before ‘::’ token
  391 |       basic_ostream(const basic_ostream&) = delete;
      |                                             ^~~~~~
/usr/include/c++/12/ostream:399:56: error: invalid pure specifier (only ‘= 0’ is allowed) before ‘::’ token
  399 |       basic_ostream& operator=(const basic_ostream&) = delete;
      |                                                        ^~~~~~
/usr/include/c++/12/bits/ostream.tcc: In destructor ‘std::operator<<(basic_ostream<_CharT, _Traits>&, const char*)::__ptr_guard::~__ptr_guard()’:
/usr/include/c++/12/bits/ostream.tcc:317:34: error: expected unqualified-id before ‘delete’
  317 |                 ~__ptr_guard() { delete[] __p; }
      |                                  ^~~~~~
/usr/include/c++/12/bits/ostream.tcc: In function ‘std::basic_ostream<_CharT, _Traits>& std::operator<<(basic_ostream<_CharT, _Traits>&, const char*)’:
/usr/include/c++/12/bits/ostream.tcc:319:23: error: ‘$’ was not declared in this scope
  319 |               } __pg (new _CharT[__clen]);
      |                       ^~~
/usr/include/c++/12/bits/ostream.tcc:319:23: note: the macro ‘$’ had not yet been defined
/usr/include/relacy/base.hpp:118: note: it was later defined here
  118 | #define $ RL_INFO
      | 
/usr/include/c++/12/istream: At global scope:
/usr/include/c++/12/istream:611:45: error: invalid pure specifier (only ‘= 0’ is allowed) before ‘::’ token
  611 |       basic_istream(const basic_istream&) = delete;
      |                                             ^~~~~~
/usr/include/c++/12/istream:622:56: error: invalid pure specifier (only ‘= 0’ is allowed) before ‘::’ token
  622 |       basic_istream& operator=(const basic_istream&) = delete;
      |                                                        ^~~~~~
/usr/include/c++/12/istream:929:47: error: invalid pure specifier (only ‘= 0’ is allowed) before ‘::’ token
  929 |       basic_iostream(const basic_iostream&) = delete;
      |                                               ^~~~~~
/usr/include/c++/12/istream:937:58: error: invalid pure specifier (only ‘= 0’ is allowed) before ‘::’ token
  937 |       basic_iostream& operator=(const basic_iostream&) = delete;
      |                                                          ^~~~~~
/usr/include/c++/12/sstream:146:49: error: invalid pure specifier (only ‘= 0’ is allowed) before ‘::’ token
  146 |       basic_stringbuf(const basic_stringbuf&) = delete;
      |                                                 ^~~~~~
/usr/include/c++/12/sstream:203:43: error: invalid pure specifier (only ‘= 0’ is allowed) before ‘::’ token
  203 |       operator=(const basic_stringbuf&) = delete;
      |                                           ^~~~~~
/usr/include/c++/12/sstream:620:57: error: invalid pure specifier (only ‘= 0’ is allowed) before ‘::’ token
  620 |       basic_istringstream(const basic_istringstream&) = delete;
      |                                                         ^~~~~~
/usr/include/c++/12/sstream:662:47: error: invalid pure specifier (only ‘= 0’ is allowed) before ‘::’ token
  662 |       operator=(const basic_istringstream&) = delete;
      |                                               ^~~~~~
/usr/include/c++/12/sstream:841:57: error: invalid pure specifier (only ‘= 0’ is allowed) before ‘::’ token
  841 |       basic_ostringstream(const basic_ostringstream&) = delete;
      |                                                         ^~~~~~
/usr/include/c++/12/sstream:883:47: error: invalid pure specifier (only ‘= 0’ is allowed) before ‘::’ token
  883 |       operator=(const basic_ostringstream&) = delete;
      |                                               ^~~~~~
/usr/include/c++/12/sstream:1058:55: error: invalid pure specifier (only ‘= 0’ is allowed) before ‘::’ token
 1058 |       basic_stringstream(const basic_stringstream&) = delete;
      |                                                       ^~~~~~
/usr/include/c++/12/sstream:1102:46: error: invalid pure specifier (only ‘= 0’ is allowed) before ‘::’ token
 1102 |       operator=(const basic_stringstream&) = delete;
      |                                              ^~~~~~
/usr/include/c++/12/bits/stl_tempbuf.h: In function ‘void std::__detail::__return_temporary_buffer(_Tp*, std::size_t)’:
/usr/include/c++/12/bits/stl_tempbuf.h:74:20: error: expected operator before ‘rl’
   74 |         ::operator delete(__p, __len * sizeof(_Tp));
      |                    ^~~~~~
/usr/include/c++/12/bits/stl_tempbuf.h: In function ‘std::pair<_Tp*, int> std::get_temporary_buffer(ptrdiff_t)’:
/usr/include/c++/12/bits/stl_tempbuf.h:110:53: error: expected operator before ‘rl’
  110 |           _Tp* __tmp = static_cast<_Tp*>(::operator new(__len * sizeof(_Tp),
      |                                                     ^~~
In file included from /usr/include/c++/12/bits/stl_algo.h:61,
                 from /usr/include/c++/12/algorithm:61,
                 from /usr/include/relacy/pch.hpp:38:
/usr/include/c++/12/bits/stl_tempbuf.h:110:52: error: expected ‘)’ before ‘rl’
  110 |           _Tp* __tmp = static_cast<_Tp*>(::operator new(__len * sizeof(_Tp),
      |                                                    ^
      |                                                    )
/usr/include/c++/12/bits/stl_tempbuf.h: In function ‘void std::return_temporary_buffer(_Tp*)’:
/usr/include/c++/12/bits/stl_tempbuf.h:129:18: error: expected operator before ‘rl’
  129 |     { ::operator delete(__p); }
      |                  ^~~~~~
/usr/include/c++/12/utility: At global scope:
/usr/include/c++/12/utility:108:34: error: invalid pure specifier (only ‘= 0’ is allowed) before ‘::’ token
  108 |     void as_const(const _Tp&&) = delete;
      |                                  ^~~~~~
/usr/include/c++/12/bits/uses_allocator.h:124:35: error: invalid pure specifier (only ‘= 0’ is allowed) before ‘::’ token
  124 |     __use_alloc(const _Alloc&&) = delete;
      |                                   ^~~~~~
/usr/include/c++/12/bits/uses_allocator.h: In function ‘void std::__uses_allocator_construct_impl(__uses_alloc0, _Tp*, _Args&& ...)’:
/usr/include/c++/12/bits/uses_allocator.h:168:9: error: ‘$’ was not declared in this scope
  168 |     { ::new ((void*)__ptr) _Tp(std::forward<_Args>(__args)...); }
      |         ^~~
/usr/include/c++/12/bits/uses_allocator.h:168:9: note: the macro ‘$’ had not yet been defined
/usr/include/relacy/base.hpp:118: note: it was later defined here
  118 | #define $ RL_INFO
      | 
/usr/include/c++/12/bits/uses_allocator.h: In function ‘void std::__uses_allocator_construct_impl(__uses_alloc1<_Alloc>, _Tp*, _Args&& ...)’:
/usr/include/c++/12/bits/uses_allocator.h:174:9: error: ‘$’ was not declared in this scope
  174 |       ::new ((void*)__ptr) _Tp(allocator_arg, *__a._M_a,
      |         ^~~
/usr/include/c++/12/bits/uses_allocator.h:174:9: note: the macro ‘$’ had not yet been defined
/usr/include/relacy/base.hpp:118: note: it was later defined here
  118 | #define $ RL_INFO
      | 
/usr/include/c++/12/bits/uses_allocator.h: In function ‘void std::__uses_allocator_construct_impl(__uses_alloc2<_Alloc>, _Tp*, _Args&& ...)’:
/usr/include/c++/12/bits/uses_allocator.h:181:9: error: ‘$’ was not declared in this scope
  181 |     { ::new ((void*)__ptr) _Tp(std::forward<_Args>(__args)..., *__a._M_a); }
      |         ^~~
/usr/include/c++/12/bits/uses_allocator.h:181:9: note: the macro ‘$’ had not yet been defined
/usr/include/relacy/base.hpp:118: note: it was later defined here
  118 | #define $ RL_INFO
      | 
/usr/include/c++/12/tuple: At global scope:
/usr/include/c++/12/tuple:299:52: error: invalid pure specifier (only ‘= 0’ is allowed) before ‘::’ token
  299 |       _Tuple_impl& operator=(const _Tuple_impl&) = delete;
      |                                                    ^~~~~~
/usr/include/c++/12/tuple:448:52: error: invalid pure specifier (only ‘= 0’ is allowed) before ‘::’ token
  448 |       _Tuple_impl& operator=(const _Tuple_impl&) = delete;
      |                                                    ^~~~~~
/usr/include/c++/12/tuple:1375:45: error: invalid pure specifier (only ‘= 0’ is allowed) before ‘::’ token
 1375 |     __get_helper(const tuple<_Types...>&) = delete;
      |                                             ^~~~~~
/usr/include/c++/12/tuple:1411:39: error: invalid pure specifier (only ‘= 0’ is allowed) before ‘::’ token
 1411 |     get(const tuple<_Elements...>&) = delete;
      |                                       ^~~~~~
/usr/include/c++/12/tuple:1766:56: error: invalid pure specifier (only ‘= 0’ is allowed) before ‘::’ token
 1766 |     swap(tuple<_Elements...>&, tuple<_Elements...>&) = delete;
      |                                                        ^~~~~~
/usr/include/c++/12/bits/unique_ptr.h: In member function ‘void std::default_delete<_Tp>::operator()(_Tp*) const’:
/usr/include/c++/12/bits/unique_ptr.h:95:9: error: expected unqualified-id before ‘delete’
   95 |         delete __ptr;
      |         ^~~~~~
/usr/include/c++/12/bits/unique_ptr.h: In member function ‘typename std::enable_if<std::is_convertible<_Up (*)[], _Tp (*)[]>::value>::type std::default_delete<_Tp []>::operator()(_Up*) const’:
/usr/include/c++/12/bits/unique_ptr.h:132:11: error: expected unqualified-id before ‘delete’
  132 |           delete [] __ptr;
      |           ^~~~~~
/usr/include/c++/12/bits/unique_ptr.h: At global scope:
/usr/include/c++/12/bits/unique_ptr.h:243:55: error: invalid pure specifier (only ‘= 0’ is allowed) before ‘::’ token
  243 |       __uniq_ptr_data& operator=(__uniq_ptr_data&&) = delete;
      |                                                       ^~~~~~
/usr/include/c++/12/bits/unique_ptr.h:250:44: error: invalid pure specifier (only ‘= 0’ is allowed) before ‘::’ token
  250 |       __uniq_ptr_data(__uniq_ptr_data&&) = delete;
      |                                            ^~~~~~
/usr/include/c++/12/bits/unique_ptr.h:258:44: error: invalid pure specifier (only ‘= 0’ is allowed) before ‘::’ token
  258 |       __uniq_ptr_data(__uniq_ptr_data&&) = delete;
      |                                            ^~~~~~
/usr/include/c++/12/bits/unique_ptr.h:259:55: error: invalid pure specifier (only ‘= 0’ is allowed) before ‘::’ token
  259 |       __uniq_ptr_data& operator=(__uniq_ptr_data&&) = delete;
      |                                                       ^~~~~~
/usr/include/c++/12/bits/unique_ptr.h:347:50: error: invalid pure specifier (only ‘= 0’ is allowed) before ‘::’ token
  347 |                                  _DelUnref&&>) = delete;
      |                                                  ^~~~~~
/usr/include/c++/12/bits/unique_ptr.h:514:39: error: invalid pure specifier (only ‘= 0’ is allowed) before ‘::’ token
  514 |       unique_ptr(const unique_ptr&) = delete;
      |                                       ^~~~~~
/usr/include/c++/12/bits/unique_ptr.h:515:50: error: invalid pure specifier (only ‘= 0’ is allowed) before ‘::’ token
  515 |       unique_ptr& operator=(const unique_ptr&) = delete;
      |                                                  ^~~~~~
/usr/include/c++/12/bits/unique_ptr.h:640:50: error: invalid pure specifier (only ‘= 0’ is allowed) before ‘::’ token
  640 |                                  _DelUnref&&>) = delete;
      |                                                  ^~~~~~
/usr/include/c++/12/bits/unique_ptr.h:791:39: error: invalid pure specifier (only ‘= 0’ is allowed) before ‘::’ token
  791 |       unique_ptr(const unique_ptr&) = delete;
      |                                       ^~~~~~
/usr/include/c++/12/bits/unique_ptr.h:792:50: error: invalid pure specifier (only ‘= 0’ is allowed) before ‘::’ token
  792 |       unique_ptr& operator=(const unique_ptr&) = delete;
      |                                                  ^~~~~~
/usr/include/c++/12/bits/unique_ptr.h:816:35: error: invalid pure specifier (only ‘= 0’ is allowed) before ‘::’ token
  816 |          unique_ptr<_Tp, _Dp>&) = delete;
      |                                   ^~~~~~
/usr/include/c++/12/bits/unique_ptr.h: In function ‘std::__detail::__unique_ptr_t<_Tp> std::make_unique(_Args&& ...)’:
/usr/include/c++/12/bits/unique_ptr.h:1065:30: error: ‘$’ was not declared in this scope
 1065 |     { return unique_ptr<_Tp>(new _Tp(std::forward<_Args>(__args)...)); }
      |                              ^~~
/usr/include/c++/12/bits/unique_ptr.h:1065:30: note: the macro ‘$’ had not yet been defined
/usr/include/relacy/base.hpp:118: note: it was later defined here
  118 | #define $ RL_INFO
      | 
/usr/include/c++/12/bits/unique_ptr.h: In function ‘std::__detail::__unique_ptr_array_t<_Tp> std::make_unique(size_t)’:
/usr/include/c++/12/bits/unique_ptr.h:1080:30: error: ‘$’ was not declared in this scope
 1080 |     { return unique_ptr<_Tp>(new remove_extent_t<_Tp>[__num]()); }
      |                              ^~~
/usr/include/c++/12/bits/unique_ptr.h:1080:30: note: the macro ‘$’ had not yet been defined
/usr/include/relacy/base.hpp:118: note: it was later defined here
  118 | #define $ RL_INFO
      | 
/usr/include/c++/12/bits/unique_ptr.h: At global scope:
/usr/include/c++/12/bits/unique_ptr.h:1089:31: error: invalid pure specifier (only ‘= 0’ is allowed) before ‘::’ token
 1089 |     make_unique(_Args&&...) = delete;
      |                               ^~~~~~
/usr/include/c++/12/ext/concurrence.h:119:34: error: ‘PTHREAD_MUTEX_INITIALIZER’ was not declared in this scope; did you mean ‘PTHREAD_MUTEX_NORMAL’?
  119 |     __gthread_mutex_t _M_mutex = __GTHREAD_MUTEX_INIT;
      |                                  ^~~~~~~~~~~~~~~~~~~~
/usr/include/c++/12/ext/concurrence.h:252:32: error: ‘PTHREAD_COND_INITIALIZER’ was not declared in this scope
  252 |     __gthread_cond_t _M_cond = __GTHREAD_COND_INIT;
      |                                ^~~~~~~~~~~~~~~~~~~
/usr/include/c++/12/bits/shared_ptr_base.h:234:51: error: invalid pure specifier (only ‘= 0’ is allowed) before ‘::’ token
  234 |       _Sp_counted_base(_Sp_counted_base const&) = delete;
      |                                                   ^~~~~~
/usr/include/c++/12/bits/shared_ptr_base.h:235:62: error: invalid pure specifier (only ‘= 0’ is allowed) before ‘::’ token
  235 |       _Sp_counted_base& operator=(_Sp_counted_base const&) = delete;
      |                                                              ^~~~~~
/usr/include/c++/12/bits/shared_ptr_base.h: In member function ‘virtual void std::_Sp_counted_base<_Lp>::_M_destroy()’:
/usr/include/c++/12/bits/shared_ptr_base.h:144:9: error: expected unqualified-id before ‘delete’
  144 |       { delete this; }
      |         ^~~~~~
/usr/include/c++/12/bits/shared_ptr_base.h: At global scope:
/usr/include/c++/12/bits/shared_ptr_base.h:438:49: error: invalid pure specifier (only ‘= 0’ is allowed) before ‘::’ token
  438 |       _Sp_counted_ptr(const _Sp_counted_ptr&) = delete;
      |                                                 ^~~~~~
/usr/include/c++/12/bits/shared_ptr_base.h:439:60: error: invalid pure specifier (only ‘= 0’ is allowed) before ‘::’ token
  439 |       _Sp_counted_ptr& operator=(const _Sp_counted_ptr&) = delete;
      |                                                            ^~~~~~
/usr/include/c++/12/bits/shared_ptr_base.h: In member function ‘virtual void std::_Sp_counted_ptr<_Ptr, _Lp>::_M_dispose()’:
/usr/include/c++/12/bits/shared_ptr_base.h:428:9: error: expected unqualified-id before ‘delete’
  428 |       { delete _M_ptr; }
      |         ^~~~~~
/usr/include/c++/12/bits/shared_ptr_base.h: In member function ‘virtual void std::_Sp_counted_ptr<_Ptr, _Lp>::_M_destroy()’:
/usr/include/c++/12/bits/shared_ptr_base.h:432:9: error: expected unqualified-id before ‘delete’
  432 |       { delete this; }
      |         ^~~~~~
/usr/include/c++/12/bits/shared_ptr_base.h: In member function ‘void std::__sp_array_delete::operator()(_Yp*) const’:
/usr/include/c++/12/bits/shared_ptr_base.h:889:41: error: expected unqualified-id before ‘delete’
  889 |       void operator()(_Yp* __p) const { delete[] __p; }
      |                                         ^~~~~~
/usr/include/c++/12/bits/shared_ptr_base.h: In constructor ‘std::__shared_count<_Lp>::__shared_count(_Ptr)’:
/usr/include/c++/12/bits/shared_ptr_base.h:917:23: error: ‘$’ was not declared in this scope
  917 |               _M_pi = new _Sp_counted_ptr<_Ptr, _Lp>(__p);
      |                       ^~~
/usr/include/c++/12/bits/shared_ptr_base.h:917:23: note: the macro ‘$’ had not yet been defined
/usr/include/relacy/base.hpp:118: note: it was later defined here
  118 | #define $ RL_INFO
      | 
/usr/include/c++/12/bits/shared_ptr_base.h:921:15: error: expected unqualified-id before ‘delete’
  921 |               delete __p;
      |               ^~~~~~
/usr/include/c++/12/bits/shared_ptr_base.h: In constructor ‘std::__shared_count<_Lp>::__shared_count(_Ptr, _Deleter, _Alloc)’:
/usr/include/c++/12/bits/shared_ptr_base.h:952:17: error: ‘$’ was not declared in this scope
  952 |               ::new (__mem) _Sp_cd_type(__p, std::move(__d), std::move(__a));
      |                 ^~~
/usr/include/c++/12/bits/shared_ptr_base.h:952:17: note: the macro ‘$’ had not yet been defined
/usr/include/relacy/base.hpp:118: note: it was later defined here
  118 | #define $ RL_INFO
      | 
/usr/include/c++/12/bits/shared_ptr_base.h: In constructor ‘std::__shared_count<_Lp>::__shared_count(_Tp*&, std::_Sp_alloc_shared_tag<_Alloc>, _Args&& ...)’:
/usr/include/c++/12/bits/shared_ptr_base.h:971:25: error: ‘$’ was not declared in this scope
  971 |           auto __pi = ::new (__mem)
      |                         ^~~
/usr/include/c++/12/bits/shared_ptr_base.h:971:25: note: the macro ‘$’ had not yet been defined
/usr/include/relacy/base.hpp:118: note: it was later defined here
  118 | #define $ RL_INFO
      | 
/usr/include/c++/12/bits/atomic_base.h: At global scope:
/usr/include/c++/12/bits/atomic_base.h:81:7: error: redefinition of ‘$’
   81 |       memory_order_consume,
      |       ^~~~~~~~~~~~~~~~~~~~
/usr/include/c++/12/bits/atomic_base.h:80:7: note: ‘$’ previously defined here
   80 |       memory_order_relaxed,
      |       ^~~~~~~~~~~~~~~~~~~~
/usr/include/c++/12/bits/atomic_base.h:82:7: error: redefinition of ‘$’
   82 |       memory_order_acquire,
      |       ^~~~~~~~~~~~~~~~~~~~
/usr/include/c++/12/bits/atomic_base.h:80:7: note: ‘$’ previously defined here
   80 |       memory_order_relaxed,
      |       ^~~~~~~~~~~~~~~~~~~~
/usr/include/c++/12/bits/atomic_base.h:83:7: error: redefinition of ‘$’
   83 |       memory_order_release,
      |       ^~~~~~~~~~~~~~~~~~~~
/usr/include/c++/12/bits/atomic_base.h:80:7: note: ‘$’ previously defined here
   80 |       memory_order_relaxed,
      |       ^~~~~~~~~~~~~~~~~~~~
/usr/include/c++/12/bits/atomic_base.h:84:7: error: redefinition of ‘$’
   84 |       memory_order_acq_rel,
      |       ^~~~~~~~~~~~~~~~~~~~
/usr/include/c++/12/bits/atomic_base.h:80:7: note: ‘$’ previously defined here
   80 |       memory_order_relaxed,
      |       ^~~~~~~~~~~~~~~~~~~~
/usr/include/c++/12/bits/atomic_base.h:85:7: error: redefinition of ‘$’
   85 |       memory_order_seq_cst
      |       ^~~~~~~~~~~~~~~~~~~~
/usr/include/c++/12/bits/atomic_base.h:80:7: note: ‘$’ previously defined here
   80 |       memory_order_relaxed,
      |       ^~~~~~~~~~~~~~~~~~~~
/usr/include/c++/12/bits/atomic_base.h:200:39: error: invalid pure specifier (only ‘= 0’ is allowed) before ‘::’ token
  200 |     atomic_flag(const atomic_flag&) = delete;
      |                                       ^~~~~~
/usr/include/c++/12/bits/atomic_base.h:201:50: error: invalid pure specifier (only ‘= 0’ is allowed) before ‘::’ token
  201 |     atomic_flag& operator=(const atomic_flag&) = delete;
      |                                                  ^~~~~~
/usr/include/c++/12/bits/atomic_base.h:202:59: error: invalid pure specifier (only ‘= 0’ is allowed) before ‘::’ token
  202 |     atomic_flag& operator=(const atomic_flag&) volatile = delete;
      |                                                           ^~~~~~
/usr/include/c++/12/bits/atomic_base.h:210:37: error: ‘$’ is not a type
  210 |     test_and_set(memory_order __m = memory_order_seq_cst) noexcept
      |                                     ^~~~~~~~~~~~~~~~~~~~
/usr/include/c++/12/bits/atomic_base.h:216:37: error: ‘$’ is not a type
  216 |     test_and_set(memory_order __m = memory_order_seq_cst) volatile noexcept
      |                                     ^~~~~~~~~~~~~~~~~~~~
/usr/include/c++/12/bits/atomic_base.h:269:30: error: ‘$’ is not a type
  269 |     clear(memory_order __m = memory_order_seq_cst) noexcept
      |                              ^~~~~~~~~~~~~~~~~~~~
/usr/include/c++/12/bits/atomic_base.h:281:30: error: ‘$’ is not a type
  281 |     clear(memory_order __m = memory_order_seq_cst) volatile noexcept
      |                              ^~~~~~~~~~~~~~~~~~~~
/usr/include/c++/12/bits/atomic_base.h:210:37: error: default argument missing for parameter 2 of ‘bool std::atomic_flag::test_and_set(std::memory_order, int)’
  210 |     test_and_set(memory_order __m = memory_order_seq_cst) noexcept
      |                                     ^~~~~~~~~~~~~~~~~~~~
/usr/include/c++/12/bits/atomic_base.h:210:31: note: ...following parameter 1 which has a default argument
  210 |     test_and_set(memory_order __m = memory_order_seq_cst) noexcept
      |                               ^
/usr/include/c++/12/bits/atomic_base.h:216:37: error: default argument missing for parameter 2 of ‘bool std::atomic_flag::test_and_set(std::memory_order, int) volatile’
  216 |     test_and_set(memory_order __m = memory_order_seq_cst) volatile noexcept
      |                                     ^~~~~~~~~~~~~~~~~~~~
/usr/include/c++/12/bits/atomic_base.h:216:31: note: ...following parameter 1 which has a default argument
  216 |     test_and_set(memory_order __m = memory_order_seq_cst) volatile noexcept
      |                               ^
/usr/include/c++/12/bits/atomic_base.h:269:30: error: default argument missing for parameter 2 of ‘void std::atomic_flag::clear(std::memory_order, int)’
  269 |     clear(memory_order __m = memory_order_seq_cst) noexcept
      |                              ^~~~~~~~~~~~~~~~~~~~
/usr/include/c++/12/bits/atomic_base.h:269:24: note: ...following parameter 1 which has a default argument
  269 |     clear(memory_order __m = memory_order_seq_cst) noexcept
      |                        ^
/usr/include/c++/12/bits/atomic_base.h:281:30: error: default argument missing for parameter 2 of ‘void std::atomic_flag::clear(std::memory_order, int) volatile’
  281 |     clear(memory_order __m = memory_order_seq_cst) volatile noexcept
      |                              ^~~~~~~~~~~~~~~~~~~~
/usr/include/c++/12/bits/atomic_base.h:281:24: note: ...following parameter 1 which has a default argument
  281 |     clear(memory_order __m = memory_order_seq_cst) volatile noexcept
      |                        ^
/usr/include/c++/12/bits/atomic_base.h: In member function ‘void std::atomic_flag::clear(std::memory_order, int)’:
/usr/include/c++/12/bits/atomic_base.h:273:7: error: ‘__glibcxx_constexpr_assert’ was not declared in this scope
  273 |       __glibcxx_assert(__b != memory_order_consume);
      |       ^~~~~~~~~~~~~~~~
/usr/include/c++/12/bits/atomic_base.h:274:7: error: ‘__glibcxx_constexpr_assert’ was not declared in this scope
  274 |       __glibcxx_assert(__b != memory_order_acquire);
      |       ^~~~~~~~~~~~~~~~
/usr/include/c++/12/bits/atomic_base.h:275:7: error: ‘__glibcxx_constexpr_assert’ was not declared in this scope
  275 |       __glibcxx_assert(__b != memory_order_acq_rel);
      |       ^~~~~~~~~~~~~~~~
/usr/include/c++/12/bits/atomic_base.h: In member function ‘void std::atomic_flag::clear(std::memory_order, int) volatile’:
/usr/include/c++/12/bits/atomic_base.h:285:7: error: ‘__glibcxx_constexpr_assert’ was not declared in this scope
  285 |       __glibcxx_assert(__b != memory_order_consume);
      |       ^~~~~~~~~~~~~~~~
/usr/include/c++/12/bits/atomic_base.h:286:7: error: ‘__glibcxx_constexpr_assert’ was not declared in this scope
  286 |       __glibcxx_assert(__b != memory_order_acquire);
      |       ^~~~~~~~~~~~~~~~
/usr/include/c++/12/bits/atomic_base.h:287:7: error: ‘__glibcxx_constexpr_assert’ was not declared in this scope
  287 |       __glibcxx_assert(__b != memory_order_acq_rel);
      |       ^~~~~~~~~~~~~~~~
/usr/include/c++/12/bits/atomic_base.h: At global scope:
/usr/include/c++/12/bits/atomic_base.h:340:45: error: invalid pure specifier (only ‘= 0’ is allowed) before ‘::’ token
  340 |       __atomic_base(const __atomic_base&) = delete;
      |                                             ^~~~~~
/usr/include/c++/12/bits/atomic_base.h:341:56: error: invalid pure specifier (only ‘= 0’ is allowed) before ‘::’ token
  341 |       __atomic_base& operator=(const __atomic_base&) = delete;
      |                                                        ^~~~~~
/usr/include/c++/12/bits/atomic_base.h:342:65: error: invalid pure specifier (only ‘= 0’ is allowed) before ‘::’ token
  342 |       __atomic_base& operator=(const __atomic_base&) volatile = delete;
      |                                                                 ^~~~~~
/usr/include/c++/12/bits/atomic_base.h:456:48: error: ‘$’ is not a type
  456 |       store(__int_type __i, memory_order __m = memory_order_seq_cst) noexcept
      |                                                ^~~~~~~~~~~~~~~~~~~~
/usr/include/c++/12/bits/atomic_base.h:469:32: error: ‘$’ is not a type
  469 |             memory_order __m = memory_order_seq_cst) volatile noexcept
      |                                ^~~~~~~~~~~~~~~~~~~~
/usr/include/c++/12/bits/atomic_base.h:481:31: error: ‘$’ is not a type
  481 |       load(memory_order __m = memory_order_seq_cst) const noexcept
      |                               ^~~~~~~~~~~~~~~~~~~~
/usr/include/c++/12/bits/atomic_base.h:492:31: error: ‘$’ is not a type
  492 |       load(memory_order __m = memory_order_seq_cst) const volatile noexcept
      |                               ^~~~~~~~~~~~~~~~~~~~
/usr/include/c++/12/bits/atomic_base.h:504:35: error: ‘$’ is not a type
  504 |                memory_order __m = memory_order_seq_cst) noexcept
      |                                   ^~~~~~~~~~~~~~~~~~~~
/usr/include/c++/12/bits/atomic_base.h:512:35: error: ‘$’ is not a type
  512 |                memory_order __m = memory_order_seq_cst) volatile noexcept
      |                                   ^~~~~~~~~~~~~~~~~~~~
/usr/include/c++/12/bits/atomic_base.h:540:48: error: ‘$’ is not a type
  540 |                             memory_order __m = memory_order_seq_cst) noexcept
      |                                                ^~~~~~~~~~~~~~~~~~~~
/usr/include/c++/12/bits/atomic_base.h:548:39: error: ‘$’ is not a type
  548 |                    memory_order __m = memory_order_seq_cst) volatile noexcept
      |                                       ^~~~~~~~~~~~~~~~~~~~
/usr/include/c++/12/bits/atomic_base.h:577:50: error: ‘$’ is not a type
  577 |                               memory_order __m = memory_order_seq_cst) noexcept
      |                                                  ^~~~~~~~~~~~~~~~~~~~
/usr/include/c++/12/bits/atomic_base.h:585:37: error: ‘$’ is not a type
  585 |                  memory_order __m = memory_order_seq_cst) volatile noexcept
      |                                     ^~~~~~~~~~~~~~~~~~~~
/usr/include/c++/12/bits/atomic_base.h:617:36: error: ‘$’ is not a type
  617 |                 memory_order __m = memory_order_seq_cst) noexcept
      |                                    ^~~~~~~~~~~~~~~~~~~~
/usr/include/c++/12/bits/atomic_base.h:622:36: error: ‘$’ is not a type
  622 |                 memory_order __m = memory_order_seq_cst) volatile noexcept
      |                                    ^~~~~~~~~~~~~~~~~~~~
/usr/include/c++/12/bits/atomic_base.h:627:36: error: ‘$’ is not a type
  627 |                 memory_order __m = memory_order_seq_cst) noexcept
      |                                    ^~~~~~~~~~~~~~~~~~~~
/usr/include/c++/12/bits/atomic_base.h:632:36: error: ‘$’ is not a type
  632 |                 memory_order __m = memory_order_seq_cst) volatile noexcept
      |                                    ^~~~~~~~~~~~~~~~~~~~
/usr/include/c++/12/bits/atomic_base.h:637:36: error: ‘$’ is not a type
  637 |                 memory_order __m = memory_order_seq_cst) noexcept
      |                                    ^~~~~~~~~~~~~~~~~~~~
/usr/include/c++/12/bits/atomic_base.h:642:36: error: ‘$’ is not a type
  642 |                 memory_order __m = memory_order_seq_cst) volatile noexcept
      |                                    ^~~~~~~~~~~~~~~~~~~~
/usr/include/c++/12/bits/atomic_base.h:647:35: error: ‘$’ is not a type
  647 |                memory_order __m = memory_order_seq_cst) noexcept
      |                                   ^~~~~~~~~~~~~~~~~~~~
/usr/include/c++/12/bits/atomic_base.h:652:35: error: ‘$’ is not a type
  652 |                memory_order __m = memory_order_seq_cst) volatile noexcept
      |                                   ^~~~~~~~~~~~~~~~~~~~
/usr/include/c++/12/bits/atomic_base.h:657:36: error: ‘$’ is not a type
  657 |                 memory_order __m = memory_order_seq_cst) noexcept
      |                                    ^~~~~~~~~~~~~~~~~~~~
/usr/include/c++/12/bits/atomic_base.h:662:36: error: ‘$’ is not a type
  662 |                 memory_order __m = memory_order_seq_cst) volatile noexcept
      |                                    ^~~~~~~~~~~~~~~~~~~~
/usr/include/c++/12/bits/atomic_base.h:456:48: error: default argument missing for parameter 3 of ‘void std::__atomic_base<_IntTp>::store(__int_type, std::memory_order, int)’
  456 |       store(__int_type __i, memory_order __m = memory_order_seq_cst) noexcept
      |                                                ^~~~~~~~~~~~~~~~~~~~
/usr/include/c++/12/bits/atomic_base.h:456:42: note: ...following parameter 2 which has a default argument
  456 |       store(__int_type __i, memory_order __m = memory_order_seq_cst) noexcept
      |                                          ^
/usr/include/c++/12/bits/atomic_base.h:469:32: error: default argument missing for parameter 3 of ‘void std::__atomic_base<_IntTp>::store(__int_type, std::memory_order, int) volatile’
  469 |             memory_order __m = memory_order_seq_cst) volatile noexcept
      |                                ^~~~~~~~~~~~~~~~~~~~
/usr/include/c++/12/bits/atomic_base.h:469:26: note: ...following parameter 2 which has a default argument
  469 |             memory_order __m = memory_order_seq_cst) volatile noexcept
      |                          ^
/usr/include/c++/12/bits/atomic_base.h:481:31: error: default argument missing for parameter 2 of ‘std::__atomic_base<_IntTp>::__int_type std::__atomic_base<_IntTp>::load(std::memory_order, int) const’
  481 |       load(memory_order __m = memory_order_seq_cst) const noexcept
      |                               ^~~~~~~~~~~~~~~~~~~~
/usr/include/c++/12/bits/atomic_base.h:481:25: note: ...following parameter 1 which has a default argument
  481 |       load(memory_order __m = memory_order_seq_cst) const noexcept
      |                         ^
/usr/include/c++/12/bits/atomic_base.h:492:31: error: default argument missing for parameter 2 of ‘std::__atomic_base<_IntTp>::__int_type std::__atomic_base<_IntTp>::load(std::memory_order, int) const volatile’
  492 |       load(memory_order __m = memory_order_seq_cst) const volatile noexcept
      |                               ^~~~~~~~~~~~~~~~~~~~
/usr/include/c++/12/bits/atomic_base.h:492:25: note: ...following parameter 1 which has a default argument
  492 |       load(memory_order __m = memory_order_seq_cst) const volatile noexcept
      |                         ^
/usr/include/c++/12/bits/atomic_base.h:504:35: error: default argument missing for parameter 3 of ‘std::__atomic_base<_IntTp>::__int_type std::__atomic_base<_IntTp>::exchange(__int_type, std::memory_order, int)’
  504 |                memory_order __m = memory_order_seq_cst) noexcept
      |                                   ^~~~~~~~~~~~~~~~~~~~
/usr/include/c++/12/bits/atomic_base.h:504:29: note: ...following parameter 2 which has a default argument
  504 |                memory_order __m = memory_order_seq_cst) noexcept
      |                             ^
/usr/include/c++/12/bits/atomic_base.h:512:35: error: default argument missing for parameter 3 of ‘std::__atomic_base<_IntTp>::__int_type std::__atomic_base<_IntTp>::exchange(__int_type, std::memory_order, int) volatile’
  512 |                memory_order __m = memory_order_seq_cst) volatile noexcept
      |                                   ^~~~~~~~~~~~~~~~~~~~
/usr/include/c++/12/bits/atomic_base.h:512:29: note: ...following parameter 2 which has a default argument
  512 |                memory_order __m = memory_order_seq_cst) volatile noexcept
      |                             ^
/usr/include/c++/12/bits/atomic_base.h:540:48: error: default argument missing for parameter 4 of ‘bool std::__atomic_base<_IntTp>::compare_exchange_weak(__int_type&, __int_type, std::memory_order, int)’
  540 |                             memory_order __m = memory_order_seq_cst) noexcept
      |                                                ^~~~~~~~~~~~~~~~~~~~
/usr/include/c++/12/bits/atomic_base.h:540:42: note: ...following parameter 3 which has a default argument
  540 |                             memory_order __m = memory_order_seq_cst) noexcept
      |                                          ^
/usr/include/c++/12/bits/atomic_base.h:548:39: error: default argument missing for parameter 4 of ‘bool std::__atomic_base<_IntTp>::compare_exchange_weak(__int_type&, __int_type, std::memory_order, int) volatile’
  548 |                    memory_order __m = memory_order_seq_cst) volatile noexcept
      |                                       ^~~~~~~~~~~~~~~~~~~~
/usr/include/c++/12/bits/atomic_base.h:548:33: note: ...following parameter 3 which has a default argument
  548 |                    memory_order __m = memory_order_seq_cst) volatile noexcept
      |                                 ^
/usr/include/c++/12/bits/atomic_base.h:577:50: error: default argument missing for parameter 4 of ‘bool std::__atomic_base<_IntTp>::compare_exchange_strong(__int_type&, __int_type, std::memory_order, int)’
  577 |                               memory_order __m = memory_order_seq_cst) noexcept
      |                                                  ^~~~~~~~~~~~~~~~~~~~
/usr/include/c++/12/bits/atomic_base.h:577:44: note: ...following parameter 3 which has a default argument
  577 |                               memory_order __m = memory_order_seq_cst) noexcept
      |                                            ^
/usr/include/c++/12/bits/atomic_base.h:585:37: error: default argument missing for parameter 4 of ‘bool std::__atomic_base<_IntTp>::compare_exchange_strong(__int_type&, __int_type, std::memory_order, int) volatile’
  585 |                  memory_order __m = memory_order_seq_cst) volatile noexcept
      |                                     ^~~~~~~~~~~~~~~~~~~~
/usr/include/c++/12/bits/atomic_base.h:585:31: note: ...following parameter 3 which has a default argument
  585 |                  memory_order __m = memory_order_seq_cst) volatile noexcept
      |                               ^
/usr/include/c++/12/bits/atomic_base.h:617:36: error: default argument missing for parameter 3 of ‘std::__atomic_base<_IntTp>::__int_type std::__atomic_base<_IntTp>::fetch_add(__int_type, std::memory_order, int)’
  617 |                 memory_order __m = memory_order_seq_cst) noexcept
      |                                    ^~~~~~~~~~~~~~~~~~~~
/usr/include/c++/12/bits/atomic_base.h:617:30: note: ...following parameter 2 which has a default argument
  617 |                 memory_order __m = memory_order_seq_cst) noexcept
      |                              ^
/usr/include/c++/12/bits/atomic_base.h:622:36: error: default argument missing for parameter 3 of ‘std::__atomic_base<_IntTp>::__int_type std::__atomic_base<_IntTp>::fetch_add(__int_type, std::memory_order, int) volatile’
  622 |                 memory_order __m = memory_order_seq_cst) volatile noexcept
      |                                    ^~~~~~~~~~~~~~~~~~~~
/usr/include/c++/12/bits/atomic_base.h:622:30: note: ...following parameter 2 which has a default argument
  622 |                 memory_order __m = memory_order_seq_cst) volatile noexcept
      |                              ^
/usr/include/c++/12/bits/atomic_base.h:627:36: error: default argument missing for parameter 3 of ‘std::__atomic_base<_IntTp>::__int_type std::__atomic_base<_IntTp>::fetch_sub(__int_type, std::memory_order, int)’
  627 |                 memory_order __m = memory_order_seq_cst) noexcept
      |                                    ^~~~~~~~~~~~~~~~~~~~
/usr/include/c++/12/bits/atomic_base.h:627:30: note: ...following parameter 2 which has a default argument
  627 |                 memory_order __m = memory_order_seq_cst) noexcept
      |                              ^
/usr/include/c++/12/bits/atomic_base.h:632:36: error: default argument missing for parameter 3 of ‘std::__atomic_base<_IntTp>::__int_type std::__atomic_base<_IntTp>::fetch_sub(__int_type, std::memory_order, int) volatile’
  632 |                 memory_order __m = memory_order_seq_cst) volatile noexcept
      |                                    ^~~~~~~~~~~~~~~~~~~~
/usr/include/c++/12/bits/atomic_base.h:632:30: note: ...following parameter 2 which has a default argument
  632 |                 memory_order __m = memory_order_seq_cst) volatile noexcept
      |                              ^
/usr/include/c++/12/bits/atomic_base.h:637:36: error: default argument missing for parameter 3 of ‘std::__atomic_base<_IntTp>::__int_type std::__atomic_base<_IntTp>::fetch_and(__int_type, std::memory_order, int)’
  637 |                 memory_order __m = memory_order_seq_cst) noexcept
      |                                    ^~~~~~~~~~~~~~~~~~~~
/usr/include/c++/12/bits/atomic_base.h:637:30: note: ...following parameter 2 which has a default argument
  637 |                 memory_order __m = memory_order_seq_cst) noexcept
      |                              ^
/usr/include/c++/12/bits/atomic_base.h:642:36: error: default argument missing for parameter 3 of ‘std::__atomic_base<_IntTp>::__int_type std::__atomic_base<_IntTp>::fetch_and(__int_type, std::memory_order, int) volatile’
  642 |                 memory_order __m = memory_order_seq_cst) volatile noexcept
      |                                    ^~~~~~~~~~~~~~~~~~~~
/usr/include/c++/12/bits/atomic_base.h:642:30: note: ...following parameter 2 which has a default argument
  642 |                 memory_order __m = memory_order_seq_cst) volatile noexcept
      |                              ^
/usr/include/c++/12/bits/atomic_base.h:647:35: error: default argument missing for parameter 3 of ‘std::__atomic_base<_IntTp>::__int_type std::__atomic_base<_IntTp>::fetch_or(__int_type, std::memory_order, int)’
  647 |                memory_order __m = memory_order_seq_cst) noexcept
      |                                   ^~~~~~~~~~~~~~~~~~~~
/usr/include/c++/12/bits/atomic_base.h:647:29: note: ...following parameter 2 which has a default argument
  647 |                memory_order __m = memory_order_seq_cst) noexcept
      |                             ^
/usr/include/c++/12/bits/atomic_base.h:652:35: error: default argument missing for parameter 3 of ‘std::__atomic_base<_IntTp>::__int_type std::__atomic_base<_IntTp>::fetch_or(__int_type, std::memory_order, int) volatile’
  652 |                memory_order __m = memory_order_seq_cst) volatile noexcept
      |                                   ^~~~~~~~~~~~~~~~~~~~
/usr/include/c++/12/bits/atomic_base.h:652:29: note: ...following parameter 2 which has a default argument
  652 |                memory_order __m = memory_order_seq_cst) volatile noexcept
      |                             ^
/usr/include/c++/12/bits/atomic_base.h:657:36: error: default argument missing for parameter 3 of ‘std::__atomic_base<_IntTp>::__int_type std::__atomic_base<_IntTp>::fetch_xor(__int_type, std::memory_order, int)’
  657 |                 memory_order __m = memory_order_seq_cst) noexcept
      |                                    ^~~~~~~~~~~~~~~~~~~~
/usr/include/c++/12/bits/atomic_base.h:657:30: note: ...following parameter 2 which has a default argument
  657 |                 memory_order __m = memory_order_seq_cst) noexcept
      |                              ^
/usr/include/c++/12/bits/atomic_base.h:662:36: error: default argument missing for parameter 3 of ‘std::__atomic_base<_IntTp>::__int_type std::__atomic_base<_IntTp>::fetch_xor(__int_type, std::memory_order, int) volatile’
  662 |                 memory_order __m = memory_order_seq_cst) volatile noexcept
      |                                    ^~~~~~~~~~~~~~~~~~~~
/usr/include/c++/12/bits/atomic_base.h:662:30: note: ...following parameter 2 which has a default argument
  662 |                 memory_order __m = memory_order_seq_cst) volatile noexcept
      |                              ^
/usr/include/c++/12/bits/atomic_base.h: In member function ‘void std::__atomic_base<_IntTp>::store(__int_type, std::memory_order, int)’:
/usr/include/c++/12/bits/atomic_base.h:460:9: error: ‘__glibcxx_constexpr_assert’ was not declared in this scope
  460 |         __glibcxx_assert(__b != memory_order_acquire);
      |         ^~~~~~~~~~~~~~~~
/usr/include/c++/12/bits/atomic_base.h:461:9: error: ‘__glibcxx_constexpr_assert’ was not declared in this scope
  461 |         __glibcxx_assert(__b != memory_order_acq_rel);
      |         ^~~~~~~~~~~~~~~~
/usr/include/c++/12/bits/atomic_base.h:462:9: error: ‘__glibcxx_constexpr_assert’ was not declared in this scope
  462 |         __glibcxx_assert(__b != memory_order_consume);
      |         ^~~~~~~~~~~~~~~~
/usr/include/c++/12/bits/atomic_base.h: In member function ‘void std::__atomic_base<_IntTp>::store(__int_type, std::memory_order, int) volatile’:
/usr/include/c++/12/bits/atomic_base.h:473:9: error: ‘__glibcxx_constexpr_assert’ was not declared in this scope
  473 |         __glibcxx_assert(__b != memory_order_acquire);
      |         ^~~~~~~~~~~~~~~~
/usr/include/c++/12/bits/atomic_base.h:474:9: error: ‘__glibcxx_constexpr_assert’ was not declared in this scope
  474 |         __glibcxx_assert(__b != memory_order_acq_rel);
      |         ^~~~~~~~~~~~~~~~
/usr/include/c++/12/bits/atomic_base.h:475:9: error: ‘__glibcxx_constexpr_assert’ was not declared in this scope
  475 |         __glibcxx_assert(__b != memory_order_consume);
      |         ^~~~~~~~~~~~~~~~
/usr/include/c++/12/bits/atomic_base.h: In member function ‘std::__atomic_base<_IntTp>::__int_type std::__atomic_base<_IntTp>::load(std::memory_order, int) const’:
/usr/include/c++/12/bits/atomic_base.h:485:9: error: ‘__glibcxx_constexpr_assert’ was not declared in this scope
  485 |         __glibcxx_assert(__b != memory_order_release);
      |         ^~~~~~~~~~~~~~~~
/usr/include/c++/12/bits/atomic_base.h:486:9: error: ‘__glibcxx_constexpr_assert’ was not declared in this scope
  486 |         __glibcxx_assert(__b != memory_order_acq_rel);
      |         ^~~~~~~~~~~~~~~~
/usr/include/c++/12/bits/atomic_base.h: In member function ‘std::__atomic_base<_IntTp>::__int_type std::__atomic_base<_IntTp>::load(std::memory_order, int) const volatile’:
/usr/include/c++/12/bits/atomic_base.h:496:9: error: ‘__glibcxx_constexpr_assert’ was not declared in this scope
  496 |         __glibcxx_assert(__b != memory_order_release);
      |         ^~~~~~~~~~~~~~~~
/usr/include/c++/12/bits/atomic_base.h:497:9: error: ‘__glibcxx_constexpr_assert’ was not declared in this scope
  497 |         __glibcxx_assert(__b != memory_order_acq_rel);
      |         ^~~~~~~~~~~~~~~~
/usr/include/c++/12/bits/atomic_base.h: At global scope:
/usr/include/c++/12/bits/atomic_base.h:686:45: error: invalid pure specifier (only ‘= 0’ is allowed) before ‘::’ token
  686 |       __atomic_base(const __atomic_base&) = delete;
      |                                             ^~~~~~
/usr/include/c++/12/bits/atomic_base.h:687:56: error: invalid pure specifier (only ‘= 0’ is allowed) before ‘::’ token
  687 |       __atomic_base& operator=(const __atomic_base&) = delete;
      |                                                        ^~~~~~
/usr/include/c++/12/bits/atomic_base.h:688:65: error: invalid pure specifier (only ‘= 0’ is allowed) before ‘::’ token
  688 |       __atomic_base& operator=(const __atomic_base&) volatile = delete;
      |                                                                 ^~~~~~
/usr/include/c++/12/bits/atomic_base.h:787:32: error: ‘$’ is not a type
  787 |             memory_order __m = memory_order_seq_cst) noexcept
      |                                ^~~~~~~~~~~~~~~~~~~~
/usr/include/c++/12/bits/atomic_base.h:801:32: error: ‘$’ is not a type
  801 |             memory_order __m = memory_order_seq_cst) volatile noexcept
      |                                ^~~~~~~~~~~~~~~~~~~~
/usr/include/c++/12/bits/atomic_base.h:813:31: error: ‘$’ is not a type
  813 |       load(memory_order __m = memory_order_seq_cst) const noexcept
      |                               ^~~~~~~~~~~~~~~~~~~~
/usr/include/c++/12/bits/atomic_base.h:824:31: error: ‘$’ is not a type
  824 |       load(memory_order __m = memory_order_seq_cst) const volatile noexcept
      |                               ^~~~~~~~~~~~~~~~~~~~
/usr/include/c++/12/bits/atomic_base.h:836:35: error: ‘$’ is not a type
  836 |                memory_order __m = memory_order_seq_cst) noexcept
      |                                   ^~~~~~~~~~~~~~~~~~~~
/usr/include/c++/12/bits/atomic_base.h:844:35: error: ‘$’ is not a type
  844 |                memory_order __m = memory_order_seq_cst) volatile noexcept
      |                                   ^~~~~~~~~~~~~~~~~~~~
/usr/include/c++/12/bits/atomic_base.h:920:36: error: ‘$’ is not a type
  920 |                 memory_order __m = memory_order_seq_cst) noexcept
      |                                    ^~~~~~~~~~~~~~~~~~~~
/usr/include/c++/12/bits/atomic_base.h:925:36: error: ‘$’ is not a type
  925 |                 memory_order __m = memory_order_seq_cst) volatile noexcept
      |                                    ^~~~~~~~~~~~~~~~~~~~
/usr/include/c++/12/bits/atomic_base.h:930:36: error: ‘$’ is not a type
  930 |                 memory_order __m = memory_order_seq_cst) noexcept
      |                                    ^~~~~~~~~~~~~~~~~~~~
/usr/include/c++/12/bits/atomic_base.h:935:36: error: ‘$’ is not a type
  935 |                 memory_order __m = memory_order_seq_cst) volatile noexcept
      |                                    ^~~~~~~~~~~~~~~~~~~~
/usr/include/c++/12/bits/atomic_base.h:787:32: error: default argument missing for parameter 3 of ‘void std::__atomic_base<_PTp*>::store(__pointer_type, std::memory_order, int)’
  787 |             memory_order __m = memory_order_seq_cst) noexcept
      |                                ^~~~~~~~~~~~~~~~~~~~
/usr/include/c++/12/bits/atomic_base.h:787:26: note: ...following parameter 2 which has a default argument
  787 |             memory_order __m = memory_order_seq_cst) noexcept
      |                          ^
/usr/include/c++/12/bits/atomic_base.h:801:32: error: default argument missing for parameter 3 of ‘void std::__atomic_base<_PTp*>::store(__pointer_type, std::memory_order, int) volatile’
  801 |             memory_order __m = memory_order_seq_cst) volatile noexcept
      |                                ^~~~~~~~~~~~~~~~~~~~
/usr/include/c++/12/bits/atomic_base.h:801:26: note: ...following parameter 2 which has a default argument
  801 |             memory_order __m = memory_order_seq_cst) volatile noexcept
      |                          ^
/usr/include/c++/12/bits/atomic_base.h:813:31: error: default argument missing for parameter 2 of ‘_PTp* std::__atomic_base<_PTp*>::load(std::memory_order, int) const’
  813 |       load(memory_order __m = memory_order_seq_cst) const noexcept
      |                               ^~~~~~~~~~~~~~~~~~~~
/usr/include/c++/12/bits/atomic_base.h:813:25: note: ...following parameter 1 which has a default argument
  813 |       load(memory_order __m = memory_order_seq_cst) const noexcept
      |                         ^
/usr/include/c++/12/bits/atomic_base.h:824:31: error: default argument missing for parameter 2 of ‘_PTp* std::__atomic_base<_PTp*>::load(std::memory_order, int) const volatile’
  824 |       load(memory_order __m = memory_order_seq_cst) const volatile noexcept
      |                               ^~~~~~~~~~~~~~~~~~~~
/usr/include/c++/12/bits/atomic_base.h:824:25: note: ...following parameter 1 which has a default argument
  824 |       load(memory_order __m = memory_order_seq_cst) const volatile noexcept
      |                         ^
/usr/include/c++/12/bits/atomic_base.h:836:35: error: default argument missing for parameter 3 of ‘_PTp* std::__atomic_base<_PTp*>::exchange(__pointer_type, std::memory_order, int)’
  836 |                memory_order __m = memory_order_seq_cst) noexcept
      |                                   ^~~~~~~~~~~~~~~~~~~~
/usr/include/c++/12/bits/atomic_base.h:836:29: note: ...following parameter 2 which has a default argument
  836 |                memory_order __m = memory_order_seq_cst) noexcept
      |                             ^
/usr/include/c++/12/bits/atomic_base.h:844:35: error: default argument missing for parameter 3 of ‘_PTp* std::__atomic_base<_PTp*>::exchange(__pointer_type, std::memory_order, int) volatile’
  844 |                memory_order __m = memory_order_seq_cst) volatile noexcept
      |                                   ^~~~~~~~~~~~~~~~~~~~
/usr/include/c++/12/bits/atomic_base.h:844:29: note: ...following parameter 2 which has a default argument
  844 |                memory_order __m = memory_order_seq_cst) volatile noexcept
      |                             ^
/usr/include/c++/12/bits/atomic_base.h:920:36: error: default argument missing for parameter 3 of ‘_PTp* std::__atomic_base<_PTp*>::fetch_add(std::ptrdiff_t, std::memory_order, int)’
  920 |                 memory_order __m = memory_order_seq_cst) noexcept
      |                                    ^~~~~~~~~~~~~~~~~~~~
/usr/include/c++/12/bits/atomic_base.h:920:30: note: ...following parameter 2 which has a default argument
  920 |                 memory_order __m = memory_order_seq_cst) noexcept
      |                              ^
/usr/include/c++/12/bits/atomic_base.h:925:36: error: default argument missing for parameter 3 of ‘_PTp* std::__atomic_base<_PTp*>::fetch_add(std::ptrdiff_t, std::memory_order, int) volatile’
  925 |                 memory_order __m = memory_order_seq_cst) volatile noexcept
      |                                    ^~~~~~~~~~~~~~~~~~~~
/usr/include/c++/12/bits/atomic_base.h:925:30: note: ...following parameter 2 which has a default argument
  925 |                 memory_order __m = memory_order_seq_cst) volatile noexcept
      |                              ^
/usr/include/c++/12/bits/atomic_base.h:930:36: error: default argument missing for parameter 3 of ‘_PTp* std::__atomic_base<_PTp*>::fetch_sub(std::ptrdiff_t, std::memory_order, int)’
  930 |                 memory_order __m = memory_order_seq_cst) noexcept
      |                                    ^~~~~~~~~~~~~~~~~~~~
/usr/include/c++/12/bits/atomic_base.h:930:30: note: ...following parameter 2 which has a default argument
  930 |                 memory_order __m = memory_order_seq_cst) noexcept
      |                              ^
/usr/include/c++/12/bits/atomic_base.h:935:36: error: default argument missing for parameter 3 of ‘_PTp* std::__atomic_base<_PTp*>::fetch_sub(std::ptrdiff_t, std::memory_order, int) volatile’
  935 |                 memory_order __m = memory_order_seq_cst) volatile noexcept
      |                                    ^~~~~~~~~~~~~~~~~~~~
/usr/include/c++/12/bits/atomic_base.h:935:30: note: ...following parameter 2 which has a default argument
  935 |                 memory_order __m = memory_order_seq_cst) volatile noexcept
      |                              ^
/usr/include/c++/12/bits/atomic_base.h: In member function ‘void std::__atomic_base<_PTp*>::store(__pointer_type, std::memory_order, int)’:
/usr/include/c++/12/bits/atomic_base.h:792:9: error: ‘__glibcxx_constexpr_assert’ was not declared in this scope
  792 |         __glibcxx_assert(__b != memory_order_acquire);
      |         ^~~~~~~~~~~~~~~~
/usr/include/c++/12/bits/atomic_base.h:793:9: error: ‘__glibcxx_constexpr_assert’ was not declared in this scope
  793 |         __glibcxx_assert(__b != memory_order_acq_rel);
      |         ^~~~~~~~~~~~~~~~
/usr/include/c++/12/bits/atomic_base.h:794:9: error: ‘__glibcxx_constexpr_assert’ was not declared in this scope
  794 |         __glibcxx_assert(__b != memory_order_consume);
      |         ^~~~~~~~~~~~~~~~
/usr/include/c++/12/bits/atomic_base.h: In member function ‘void std::__atomic_base<_PTp*>::store(__pointer_type, std::memory_order, int) volatile’:
/usr/include/c++/12/bits/atomic_base.h:805:9: error: ‘__glibcxx_constexpr_assert’ was not declared in this scope
  805 |         __glibcxx_assert(__b != memory_order_acquire);
      |         ^~~~~~~~~~~~~~~~
/usr/include/c++/12/bits/atomic_base.h:806:9: error: ‘__glibcxx_constexpr_assert’ was not declared in this scope
  806 |         __glibcxx_assert(__b != memory_order_acq_rel);
      |         ^~~~~~~~~~~~~~~~
/usr/include/c++/12/bits/atomic_base.h:807:9: error: ‘__glibcxx_constexpr_assert’ was not declared in this scope
  807 |         __glibcxx_assert(__b != memory_order_consume);
      |         ^~~~~~~~~~~~~~~~
/usr/include/c++/12/bits/atomic_base.h: In member function ‘_PTp* std::__atomic_base<_PTp*>::load(std::memory_order, int) const’:
/usr/include/c++/12/bits/atomic_base.h:817:9: error: ‘__glibcxx_constexpr_assert’ was not declared in this scope
  817 |         __glibcxx_assert(__b != memory_order_release);
      |         ^~~~~~~~~~~~~~~~
/usr/include/c++/12/bits/atomic_base.h:818:9: error: ‘__glibcxx_constexpr_assert’ was not declared in this scope
  818 |         __glibcxx_assert(__b != memory_order_acq_rel);
      |         ^~~~~~~~~~~~~~~~
/usr/include/c++/12/bits/atomic_base.h: In member function ‘_PTp* std::__atomic_base<_PTp*>::load(std::memory_order, int) const volatile’:
/usr/include/c++/12/bits/atomic_base.h:828:9: error: ‘__glibcxx_constexpr_assert’ was not declared in this scope
  828 |         __glibcxx_assert(__b != memory_order_release);
      |         ^~~~~~~~~~~~~~~~
/usr/include/c++/12/bits/atomic_base.h:829:9: error: ‘__glibcxx_constexpr_assert’ was not declared in this scope
  829 |         __glibcxx_assert(__b != memory_order_acq_rel);
      |         ^~~~~~~~~~~~~~~~
/usr/include/c++/12/bits/shared_ptr_atomic.h: At global scope:
/usr/include/c++/12/bits/shared_ptr_atomic.h:49:37: error: invalid pure specifier (only ‘= 0’ is allowed) before ‘::’ token
   49 |     _Sp_locker(const _Sp_locker&) = delete;
      |                                     ^~~~~~
/usr/include/c++/12/bits/shared_ptr_atomic.h:50:48: error: invalid pure specifier (only ‘= 0’ is allowed) before ‘::’ token
   50 |     _Sp_locker& operator=(const _Sp_locker&) = delete;
      |                                                ^~~~~~
/usr/include/c++/12/backward/auto_ptr.h: In destructor ‘std::auto_ptr< <template-parameter-1-1> >::~auto_ptr()’:
/usr/include/c++/12/backward/auto_ptr.h:172:21: error: expected unqualified-id before ‘delete’
  172 |       ~auto_ptr() { delete _M_ptr; }
      |                     ^~~~~~
/usr/include/c++/12/backward/auto_ptr.h: In member function ‘void std::auto_ptr< <template-parameter-1-1> >::reset(element_type*)’:
/usr/include/c++/12/backward/auto_ptr.h:246:13: error: expected unqualified-id before ‘delete’
  246 |             delete _M_ptr;
      |             ^~~~~~
/usr/include/c++/12/backward/auto_ptr.h: In member function ‘std::auto_ptr< <template-parameter-1-1> >& std::auto_ptr< <template-parameter-1-1> >::operator=(std::auto_ptr_ref<_Tp>)’:
/usr/include/c++/12/backward/auto_ptr.h:274:13: error: expected unqualified-id before ‘delete’
  274 |             delete _M_ptr;
      |             ^~~~~~
/usr/include/c++/12/bits/stl_vector.h: At global scope:
/usr/include/c++/12/bits/stl_vector.h:1849:50: error: invalid pure specifier (only ‘= 0’ is allowed) before ‘::’ token
 1849 |           _Storage& operator=(const _Storage&) = delete;
      |                                                  ^~~~~~
/usr/include/c++/12/bits/stl_bvector.h:1508:21: error: invalid pure specifier (only ‘= 0’ is allowed) before ‘::’ token
 1508 |       void data() = delete;
      |                     ^~~~~~
/usr/include/c++/12/bits/node_handle.h:182:46: error: invalid pure specifier (only ‘= 0’ is allowed) before ‘::’ token
  182 |         _Optional_alloc(_Optional_alloc&&) = delete;
      |                                              ^~~~~~
/usr/include/c++/12/bits/node_handle.h:183:57: error: invalid pure specifier (only ‘= 0’ is allowed) before ‘::’ token
  183 |         _Optional_alloc& operator=(_Optional_alloc&&) = delete;
      |                                                         ^~~~~~
/usr/include/c++/12/bits/stl_tree.h:458:61: error: invalid pure specifier (only ‘= 0’ is allowed) before ‘::’ token
  458 |         _Reuse_or_alloc_node(const _Reuse_or_alloc_node&) = delete;
      |                                                             ^~~~~~
/usr/include/relacy/atomic.hpp: In destructor ‘rl::generic_atomic<T, strong_init>::~generic_atomic()’:
/usr/include/relacy/base.hpp:117:23: error: cannot convert ‘rl::debug_info’ to ‘int’
  117 | #define RL_INFO ::rl::debug_info(__FUNCTION__, __FILE__, __LINE__)
      |                       ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
      |                       |
      |                       rl::debug_info
/usr/include/relacy/base.hpp:118:11: note: in expansion of macro ‘RL_INFO’
  118 | #define $ RL_INFO
      |           ^~~~~~~
/usr/include/relacy/atomic.hpp:215:21: note: in expansion of macro ‘$’
  215 |         sign_.check($);
      |                     ^
/usr/include/relacy/signature.hpp:45:33: note:   initializing argument 1 of ‘void rl::signature<magic>::check(int) const [with unsigned int magic = 987654321]’
   45 |     void check(debug_info_param info) const
      |                ~~~~~~~~~~~~~~~~~^~~~
/usr/include/relacy/atomic.hpp: In member function ‘T rl::generic_atomic<T, strong_init>::debug_value() const’:
/usr/include/relacy/base.hpp:117:23: error: cannot convert ‘rl::debug_info’ to ‘int’
  117 | #define RL_INFO ::rl::debug_info(__FUNCTION__, __FILE__, __LINE__)
      |                       ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
      |                       |
      |                       rl::debug_info
/usr/include/relacy/base.hpp:118:11: note: in expansion of macro ‘RL_INFO’
  118 | #define $ RL_INFO
      |           ^~~~~~~
/usr/include/relacy/atomic.hpp:221:21: note: in expansion of macro ‘$’
  221 |         sign_.check($);
      |                     ^
/usr/include/relacy/signature.hpp:45:33: note:   initializing argument 1 of ‘void rl::signature<magic>::check(int) const [with unsigned int magic = 987654321]’
   45 |     void check(debug_info_param info) const
      |                ~~~~~~~~~~~~~~~~~^~~~
/usr/include/relacy/atomic.hpp: In member function ‘rl::unpark_reason rl::generic_atomic<T, strong_init>::wait(rl::context&, bool, bool, rl::debug_info_param)’:
/usr/include/relacy/atomic.hpp:419:21: error: cannot convert ‘const rl::debug_info’ to ‘int’
  419 |         sign_.check(info);
      |                     ^~~~
      |                     |
      |                     const rl::debug_info
/usr/include/relacy/signature.hpp:45:33: note:   initializing argument 1 of ‘void rl::signature<magic>::check(int) const [with unsigned int magic = 987654321]’
   45 |     void check(debug_info_param info) const
      |                ~~~~~~~~~~~~~~~~~^~~~
/usr/include/relacy/atomic.hpp: In member function ‘rl::thread_id_t rl::generic_atomic<T, strong_init>::wake(rl::context&, rl::thread_id_t, rl::debug_info_param)’:
/usr/include/relacy/atomic.hpp:425:21: error: cannot convert ‘const rl::debug_info’ to ‘int’
  425 |         sign_.check(info);
      |                     ^~~~
      |                     |
      |                     const rl::debug_info
/usr/include/relacy/signature.hpp:45:33: note:   initializing argument 1 of ‘void rl::signature<magic>::check(int) const [with unsigned int magic = 987654321]’
   45 |     void check(debug_info_param info) const
      |                ~~~~~~~~~~~~~~~~~^~~~
/usr/include/relacy/atomic.hpp: In member function ‘T rl::generic_atomic<T, strong_init>::load_impl(rl::debug_info_param) const’:
/usr/include/relacy/atomic.hpp:443:21: error: cannot convert ‘const rl::debug_info’ to ‘int’
  443 |         sign_.check(info);
      |                     ^~~~
      |                     |
      |                     const rl::debug_info
/usr/include/relacy/signature.hpp:45:33: note:   initializing argument 1 of ‘void rl::signature<magic>::check(int) const [with unsigned int magic = 987654321]’
   45 |     void check(debug_info_param info) const
      |                ~~~~~~~~~~~~~~~~~^~~~
/usr/include/relacy/atomic.hpp: In member function ‘void rl::generic_atomic<T, strong_init>::store_impl(T, rl::debug_info_param)’:
/usr/include/relacy/atomic.hpp:476:21: error: cannot convert ‘const rl::debug_info’ to ‘int’
  476 |         sign_.check(info);
      |                     ^~~~
      |                     |
      |                     const rl::debug_info
/usr/include/relacy/signature.hpp:45:33: note:   initializing argument 1 of ‘void rl::signature<magic>::check(int) const [with unsigned int magic = 987654321]’
   45 |     void check(debug_info_param info) const
      |                ~~~~~~~~~~~~~~~~~^~~~
/usr/include/relacy/atomic.hpp: In member function ‘bool rl::generic_atomic<T, strong_init>::compare_swap_impl(T&, T, rl::debug_info_param)’:
/usr/include/relacy/atomic.hpp:494:21: error: cannot convert ‘const rl::debug_info’ to ‘int’
  494 |         sign_.check(info);
      |                     ^~~~
      |                     |
      |                     const rl::debug_info
/usr/include/relacy/signature.hpp:45:33: note:   initializing argument 1 of ‘void rl::signature<magic>::check(int) const [with unsigned int magic = 987654321]’
   45 |     void check(debug_info_param info) const
      |                ~~~~~~~~~~~~~~~~~^~~~
/usr/include/relacy/atomic.hpp: In member function ‘T rl::generic_atomic<T, strong_init>::rmw_impl(rl::rmw_type_t<type>, Y, rl::debug_info_param)’:
/usr/include/relacy/atomic.hpp:554:21: error: cannot convert ‘const rl::debug_info’ to ‘int’
  554 |         sign_.check(info);
      |                     ^~~~
      |                     |
      |                     const rl::debug_info
/usr/include/relacy/signature.hpp:45:33: note:   initializing argument 1 of ‘void rl::signature<magic>::check(int) const [with unsigned int magic = 987654321]’
   45 |     void check(debug_info_param info) const
      |                ~~~~~~~~~~~~~~~~~^~~~
In file included from /tmp/HSK7d42Iyx/dump1.h:17:
/usr/include/relacy/cli.hpp: In static member function ‘static void rl::Thread::MemoryBarrier(rl::debug_info_param)’:
/usr/include/relacy/cli.hpp:29:9: error: ‘atomic_thread_fence’ was not declared in this scope; did you mean ‘std::atomic_thread_fence’?
   29 |         atomic_thread_fence(mo_seq_cst, info);
      |         ^~~~~~~~~~~~~~~~~~~
      |         std::atomic_thread_fence
/usr/include/c++/12/bits/atomic_base.h:132:3: note: ‘std::atomic_thread_fence’ declared here
  132 |   atomic_thread_fence(memory_order __m) noexcept
      |   ^~~~~~~~~~~~~~~~~~~
/usr/include/relacy/cli.hpp: In static member function ‘static void rl::Thread::SpinWait(int, rl::debug_info_param)’:
/usr/include/relacy/cli.hpp:46:12: error: invalid use of incomplete type ‘class rl::context’
   46 |         ctx().yield(iterations, info);
      |         ~~~^~
/usr/include/relacy/context_base.hpp:93:7: note: forward declaration of ‘class rl::context’
   93 | class context
      |       ^~~~~~~
In file included from /tmp/HSK7d42Iyx/dump1.h:46:
/usr/include/relacy/relacy_std.hpp: At global scope:
/usr/include/relacy/relacy_std.hpp:22:15: error: ‘enum rl::memory_order’ conflicts with a previous declaration
   22 |     using rl::memory_order;
      |               ^~~~~~~~~~~~
/usr/include/c++/12/bits/atomic_base.h:78:16: note: previous declaration ‘enum std::memory_order’
   78 |   typedef enum memory_order
      |                ^~~~~~~~~~~~
/usr/include/relacy/relacy_std.hpp:23:15: error: ‘rl::memory_order rl::mo_relaxed’ conflicts with a previous declaration
   23 |     using rl::mo_relaxed;
      |               ^~~~~~~~~~
/usr/include/c++/12/bits/atomic_base.h:80:7: note: previous declaration ‘std::memory_order std::mo_relaxed’
   80 |       memory_order_relaxed,
      |       ^~~~~~~~~~~~~~~~~~~~
/usr/include/relacy/relacy_std.hpp:24:15: error: ‘rl::memory_order rl::mo_consume’ conflicts with a previous declaration
   24 |     using rl::mo_consume;
      |               ^~~~~~~~~~
/usr/include/c++/12/bits/atomic_base.h:81:7: note: previous declaration ‘std::memory_order std::mo_consume’
   81 |       memory_order_consume,
      |       ^~~~~~~~~~~~~~~~~~~~
/usr/include/relacy/relacy_std.hpp:25:15: error: ‘rl::memory_order rl::mo_acquire’ conflicts with a previous declaration
   25 |     using rl::mo_acquire;
      |               ^~~~~~~~~~
/usr/include/c++/12/bits/atomic_base.h:82:7: note: previous declaration ‘std::memory_order std::mo_acquire’
   82 |       memory_order_acquire,
      |       ^~~~~~~~~~~~~~~~~~~~
/usr/include/relacy/relacy_std.hpp:26:15: error: ‘rl::memory_order rl::mo_release’ conflicts with a previous declaration
   26 |     using rl::mo_release;
      |               ^~~~~~~~~~
/usr/include/c++/12/bits/atomic_base.h:83:7: note: previous declaration ‘std::memory_order std::mo_release’
   83 |       memory_order_release,
      |       ^~~~~~~~~~~~~~~~~~~~
/usr/include/relacy/relacy_std.hpp:27:15: error: ‘rl::memory_order rl::mo_acq_rel’ conflicts with a previous declaration
   27 |     using rl::mo_acq_rel;
      |               ^~~~~~~~~~
/usr/include/c++/12/bits/atomic_base.h:84:7: note: previous declaration ‘std::memory_order std::mo_acq_rel’
   84 |       memory_order_acq_rel,
      |       ^~~~~~~~~~~~~~~~~~~~
/usr/include/relacy/relacy_std.hpp:28:15: error: ‘rl::memory_order rl::mo_seq_cst’ conflicts with a previous declaration
   28 |     using rl::mo_seq_cst;
      |               ^~~~~~~~~~
/usr/include/c++/12/bits/atomic_base.h:85:7: note: previous declaration ‘std::memory_order std::mo_seq_cst’
   85 |       memory_order_seq_cst
      |       ^~~~~~~~~~~~~~~~~~~~
/usr/include/relacy/relacy_std.hpp:30:15: error: ‘template<class T> class rl::atomic’ conflicts with a previous declaration
   30 |     using rl::atomic;
      |               ^~~~~~
/usr/include/c++/12/bits/atomic_base.h:162:12: note: previous declaration ‘template<class _Tp> struct std::atomic’
  162 |     struct atomic;
      |            ^~~~~~
/usr/include/relacy/relacy_std.hpp:31:15: error: ‘atomic_thread_fence’ has not been declared in ‘rl’
   31 |     using rl::atomic_thread_fence;
      |               ^~~~~~~~~~~~~~~~~~~
/usr/include/relacy/relacy_std.hpp:32:15: error: ‘atomic_signal_fence’ has not been declared in ‘rl’
   32 |     using rl::atomic_signal_fence;
      |               ^~~~~~~~~~~~~~~~~~~
/usr/include/relacy/context.hpp: In instantiation of ‘void rl::delete_impl(type*, int) [with type = thread_local_var<void*>]’:
/usr/include/relacy/thread_local.hpp:169:16:   required from here
/usr/include/relacy/context.hpp:1117:11: error: invalid use of incomplete type ‘class rl::context’
 1117 |     ctx().free(p, false, info);
      |     ~~~~~~^~~~
/usr/include/relacy/context_base.hpp:93:7: note: forward declaration of ‘class rl::context’
   93 | class context
      |       ^~~~~~~
/usr/include/relacy/thread_local.hpp: In instantiation of ‘T rl::thread_local_var<T>::get(int) [with T = void*]’:
/usr/include/relacy/thread_local.hpp:179:49:   required from here
/usr/include/relacy/thread_local.hpp:140:31: error: invalid use of incomplete type ‘class rl::context’
  140 |         if (ctx_seq_ != ctx().get_ctx_seq())
      |                         ~~~~~~^~~~~~~~~~~
/usr/include/relacy/context_base.hpp:93:7: note: forward declaration of ‘class rl::context’
   93 | class context
      |       ^~~~~~~
/usr/include/relacy/thread_local.hpp:142:30: error: invalid use of incomplete type ‘class rl::context’
  142 |             ctx_seq_ = ctx().get_ctx_seq();
      |                        ~~~~~~^~~~~~~~~~~
/usr/include/relacy/context_base.hpp:93:7: note: forward declaration of ‘class rl::context’
   93 | class context
      |       ^~~~~~~
/usr/include/relacy/thread_local.hpp: In instantiation of ‘void rl::thread_local_var<T>::set(T, int) [with T = void*]’:
/usr/include/relacy/thread_local.hpp:184:42:   required from here
/usr/include/relacy/thread_local.hpp:130:31: error: invalid use of incomplete type ‘class rl::context’
  130 |         if (ctx_seq_ != ctx().get_ctx_seq())
      |                         ~~~~~~^~~~~~~~~~~
/usr/include/relacy/context_base.hpp:93:7: note: forward declaration of ‘class rl::context’
   93 | class context
      |       ^~~~~~~
/usr/include/relacy/thread_local.hpp:132:30: error: invalid use of incomplete type ‘class rl::context’
  132 |             ctx_seq_ = ctx().get_ctx_seq();
      |                        ~~~~~~^~~~~~~~~~~
/usr/include/relacy/context_base.hpp:93:7: note: forward declaration of ‘class rl::context’
   93 | class context
      |       ^~~~~~~
/usr/include/relacy/signature.hpp: In instantiation of ‘void rl::signature<magic>::check(int) const [with unsigned int magic = 865136298]’:
/usr/include/relacy/stdlib/event.hpp:314:20:   required from here
/usr/include/relacy/signature.hpp:56:17: error: ‘fail’ was not declared in this scope
   56 |             fail(info);
      |             ~~~~^~~~~~
/usr/include/relacy/stdlib/semaphore.hpp: In instantiation of ‘void rl::semaphore<tag_t>::init(bool, unsigned int, unsigned int, int) [with tag_t = rl::sem_tag_win]’:
/usr/include/relacy/stdlib/windows.hpp:117:15:   required from here
/usr/include/relacy/stdlib/semaphore.hpp:302:9: error: invalid use of incomplete type ‘class rl::context’
  302 |         RL_ASSERT_IMPL(0 == impl_, test_result_double_initialization_of_semaphore, "", info);
      |         ^~~~~~~~~~~~~~
/usr/include/relacy/context_base.hpp:93:7: note: forward declaration of ‘class rl::context’
   93 | class context
      |       ^~~~~~~
/usr/include/relacy/stdlib/semaphore.hpp:304:19: error: invalid use of incomplete type ‘class rl::context’
  304 |         impl_ = c.sema_ctor(spurious_wakeups, initial_count, max_count);
      |                 ~~^~~~~~~~~
/usr/include/relacy/context_base.hpp:93:7: note: forward declaration of ‘class rl::context’
   93 | class context
      |       ^~~~~~~
/usr/include/relacy/stdlib/mutex.hpp: In instantiation of ‘void rl::generic_mutex<type>::init(bool, bool, bool, bool, int) [with type = rl::mutex_tag_win_cs]’:
/usr/include/relacy/stdlib/windows.hpp:174:12:   required from here
/usr/include/relacy/stdlib/mutex.hpp:516:9: error: invalid use of incomplete type ‘class rl::context’
  516 |         RL_ASSERT_IMPL(0 == impl_, test_result_double_initialization_of_mutex, "", info);
      |         ^~~~~~~~~~~~~~
/usr/include/relacy/context_base.hpp:93:7: note: forward declaration of ‘class rl::context’
   93 | class context
      |       ^~~~~~~
/usr/include/relacy/stdlib/mutex.hpp:518:19: error: invalid use of incomplete type ‘class rl::context’
  518 |         impl_ = c.mutex_ctor(is_rw, is_exclusive_recursive, is_shared_recursive, failing_try_lock);
      |                 ~~^~~~~~~~~~
/usr/include/relacy/context_base.hpp:93:7: note: forward declaration of ‘class rl::context’
   93 | class context
      |       ^~~~~~~
/usr/include/relacy/stdlib/mutex.hpp: In instantiation of ‘void rl::generic_mutex<type>::deinit(int) [with type = rl::mutex_tag_win_cs]’:
/usr/include/relacy/stdlib/windows.hpp:194:14:   required from here
/usr/include/relacy/stdlib/mutex.hpp:525:11: error: invalid use of incomplete type ‘class rl::context’
  525 |         c.mutex_dtor(impl_);
      |         ~~^~~~~~~~~~
/usr/include/relacy/context_base.hpp:93:7: note: forward declaration of ‘class rl::context’
   93 | class context
      |       ^~~~~~~
/usr/include/relacy/stdlib/mutex.hpp: In instantiation of ‘void rl::generic_mutex<type>::lock_exclusive(int) [with type = rl::mutex_tag_win_cs]’:
/usr/include/relacy/stdlib/windows.hpp:199:22:   required from here
/usr/include/relacy/stdlib/mutex.hpp:546:22: error: invalid use of incomplete type ‘struct rl::generic_mutex_data’
  546 |         check(info)->lock_exclusive(false, info);
      |         ~~~~~~~~~~~~~^~~~~~~~~~~~~~
/usr/include/relacy/stdlib/mutex.hpp:31:8: note: forward declaration of ‘struct rl::generic_mutex_data’
   31 | struct generic_mutex_data : nocopy<>
      |        ^~~~~~~~~~~~~~~~~~
/usr/include/relacy/stdlib/mutex.hpp: In instantiation of ‘bool rl::generic_mutex<type>::try_lock_exclusive(int) [with type = rl::mutex_tag_win_cs]’:
/usr/include/relacy/stdlib/windows.hpp:204:33:   required from here
/usr/include/relacy/stdlib/mutex.hpp:551:29: error: invalid use of incomplete type ‘struct rl::generic_mutex_data’
  551 |         return check(info)->try_lock_exclusive(info);
      |                ~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~
/usr/include/relacy/stdlib/mutex.hpp:31:8: note: forward declaration of ‘struct rl::generic_mutex_data’
   31 | struct generic_mutex_data : nocopy<>
      |        ^~~~~~~~~~~~~~~~~~
/usr/include/relacy/stdlib/mutex.hpp: In instantiation of ‘void rl::generic_mutex<type>::unlock_exclusive(int) [with type = rl::mutex_tag_win_cs]’:
/usr/include/relacy/stdlib/windows.hpp:209:24:   required from here
/usr/include/relacy/stdlib/mutex.hpp:556:22: error: invalid use of incomplete type ‘struct rl::generic_mutex_data’
  556 |         check(info)->unlock_exclusive(info);
      |         ~~~~~~~~~~~~~^~~~~~~~~~~~~~~~
/usr/include/relacy/stdlib/mutex.hpp:31:8: note: forward declaration of ‘struct rl::generic_mutex_data’
   31 | struct generic_mutex_data : nocopy<>
      |        ^~~~~~~~~~~~~~~~~~
/usr/include/relacy/stdlib/mutex.hpp: In instantiation of ‘void rl::generic_mutex<type>::init(bool, bool, bool, bool, int) [with type = rl::mutex_tag_win_srwl]’:
/usr/include/relacy/stdlib/windows.hpp:217:15:   required from here
/usr/include/relacy/stdlib/mutex.hpp:516:9: error: invalid use of incomplete type ‘class rl::context’
  516 |         RL_ASSERT_IMPL(0 == impl_, test_result_double_initialization_of_mutex, "", info);
      |         ^~~~~~~~~~~~~~
/usr/include/relacy/context_base.hpp:93:7: note: forward declaration of ‘class rl::context’
   93 | class context
      |       ^~~~~~~
/usr/include/relacy/stdlib/mutex.hpp:518:19: error: invalid use of incomplete type ‘class rl::context’
  518 |         impl_ = c.mutex_ctor(is_rw, is_exclusive_recursive, is_shared_recursive, failing_try_lock);
      |                 ~~^~~~~~~~~~
/usr/include/relacy/context_base.hpp:93:7: note: forward declaration of ‘class rl::context’
   93 | class context
      |       ^~~~~~~
/usr/include/relacy/stdlib/mutex.hpp: In instantiation of ‘void rl::generic_mutex<type>::lock_exclusive(int) [with type = rl::mutex_tag_win_srwl]’:
/usr/include/relacy/stdlib/windows.hpp:222:25:   required from here
/usr/include/relacy/stdlib/mutex.hpp:546:22: error: invalid use of incomplete type ‘struct rl::generic_mutex_data’
  546 |         check(info)->lock_exclusive(false, info);
      |         ~~~~~~~~~~~~~^~~~~~~~~~~~~~
/usr/include/relacy/stdlib/mutex.hpp:31:8: note: forward declaration of ‘struct rl::generic_mutex_data’
   31 | struct generic_mutex_data : nocopy<>
      |        ^~~~~~~~~~~~~~~~~~
/usr/include/relacy/stdlib/mutex.hpp: In instantiation of ‘void rl::generic_mutex<type>::lock_shared(int) [with type = rl::mutex_tag_win_srwl]’:
/usr/include/relacy/stdlib/windows.hpp:227:22:   required from here
/usr/include/relacy/stdlib/mutex.hpp:561:22: error: invalid use of incomplete type ‘struct rl::generic_mutex_data’
  561 |         check(info)->lock_shared(info);
      |         ~~~~~~~~~~~~~^~~~~~~~~~~
/usr/include/relacy/stdlib/mutex.hpp:31:8: note: forward declaration of ‘struct rl::generic_mutex_data’
   31 | struct generic_mutex_data : nocopy<>
      |        ^~~~~~~~~~~~~~~~~~
/usr/include/relacy/stdlib/mutex.hpp: In instantiation of ‘void rl::generic_mutex<type>::unlock_exclusive(int) [with type = rl::mutex_tag_win_srwl]’:
/usr/include/relacy/stdlib/windows.hpp:232:27:   required from here
/usr/include/relacy/stdlib/mutex.hpp:556:22: error: invalid use of incomplete type ‘struct rl::generic_mutex_data’
  556 |         check(info)->unlock_exclusive(info);
      |         ~~~~~~~~~~~~~^~~~~~~~~~~~~~~~
/usr/include/relacy/stdlib/mutex.hpp:31:8: note: forward declaration of ‘struct rl::generic_mutex_data’
   31 | struct generic_mutex_data : nocopy<>
      |        ^~~~~~~~~~~~~~~~~~
/usr/include/relacy/stdlib/mutex.hpp: In instantiation of ‘void rl::generic_mutex<type>::unlock_shared(int) [with type = rl::mutex_tag_win_srwl]’:
/usr/include/relacy/stdlib/windows.hpp:237:24:   required from here
/usr/include/relacy/stdlib/mutex.hpp:571:22: error: invalid use of incomplete type ‘struct rl::generic_mutex_data’
  571 |         check(info)->unlock_shared(info);
      |         ~~~~~~~~~~~~~^~~~~~~~~~~~~
/usr/include/relacy/stdlib/mutex.hpp:31:8: note: forward declaration of ‘struct rl::generic_mutex_data’
   31 | struct generic_mutex_data : nocopy<>
      |        ^~~~~~~~~~~~~~~~~~
/usr/include/relacy/stdlib/mutex.hpp: In instantiation of ‘void rl::generic_mutex<type>::deinit(int) [with type = rl::mutex_tag_win_srwl]’:
/usr/include/relacy/stdlib/windows.hpp:243:17:   required from here
/usr/include/relacy/stdlib/mutex.hpp:525:11: error: invalid use of incomplete type ‘class rl::context’
  525 |         c.mutex_dtor(impl_);
      |         ~~^~~~~~~~~~
/usr/include/relacy/context_base.hpp:93:7: note: forward declaration of ‘class rl::context’
   93 | class context
      |       ^~~~~~~
/usr/include/relacy/stdlib/mutex.hpp: In instantiation of ‘void rl::generic_mutex<type>::init(bool, bool, bool, bool, int) [with type = rl::mutex_tag_win_mutex]’:
/usr/include/relacy/stdlib/windows.hpp:255:14:   required from here
/usr/include/relacy/stdlib/mutex.hpp:516:9: error: invalid use of incomplete type ‘class rl::context’
  516 |         RL_ASSERT_IMPL(0 == impl_, test_result_double_initialization_of_mutex, "", info);
      |         ^~~~~~~~~~~~~~
/usr/include/relacy/context_base.hpp:93:7: note: forward declaration of ‘class rl::context’
   93 | class context
      |       ^~~~~~~
/usr/include/relacy/stdlib/mutex.hpp:518:19: error: invalid use of incomplete type ‘class rl::context’
  518 |         impl_ = c.mutex_ctor(is_rw, is_exclusive_recursive, is_shared_recursive, failing_try_lock);
      |                 ~~^~~~~~~~~~
/usr/include/relacy/context_base.hpp:93:7: note: forward declaration of ‘class rl::context’
   93 | class context
      |       ^~~~~~~
/usr/include/relacy/stdlib/mutex.hpp: In instantiation of ‘void rl::generic_mutex<type>::lock_exclusive(int) [with type = rl::mutex_tag_win_mutex]’:
/usr/include/relacy/stdlib/windows.hpp:257:28:   required from here
/usr/include/relacy/stdlib/mutex.hpp:546:22: error: invalid use of incomplete type ‘struct rl::generic_mutex_data’
  546 |         check(info)->lock_exclusive(false, info);
      |         ~~~~~~~~~~~~~^~~~~~~~~~~~~~
/usr/include/relacy/stdlib/mutex.hpp:31:8: note: forward declaration of ‘struct rl::generic_mutex_data’
   31 | struct generic_mutex_data : nocopy<>
      |        ^~~~~~~~~~~~~~~~~~
/usr/include/relacy/stdlib/mutex.hpp: In instantiation of ‘void rl::generic_mutex<type>::unlock_exclusive(int) [with type = rl::mutex_tag_win_mutex]’:
/usr/include/relacy/stdlib/windows.hpp:263:54:   required from here
/usr/include/relacy/stdlib/mutex.hpp:556:22: error: invalid use of incomplete type ‘struct rl::generic_mutex_data’
  556 |         check(info)->unlock_exclusive(info);
      |         ~~~~~~~~~~~~~^~~~~~~~~~~~~~~~
/usr/include/relacy/stdlib/mutex.hpp:31:8: note: forward declaration of ‘struct rl::generic_mutex_data’
   31 | struct generic_mutex_data : nocopy<>
      |        ^~~~~~~~~~~~~~~~~~
/usr/include/relacy/stdlib/condition_variable.hpp: In instantiation of ‘void rl::condvar<tag_t>::init(bool, int) [with tag_t = rl::condvar_tag_win]’:
/usr/include/relacy/stdlib/windows.hpp:276:13:   required from here
/usr/include/relacy/stdlib/condition_variable.hpp:247:9: error: invalid use of incomplete type ‘class rl::context’
  247 |         RL_ASSERT_IMPL(0 == impl_, test_result_double_initialization_of_condvar, "", info);
      |         ^~~~~~~~~~~~~~
/usr/include/relacy/context_base.hpp:93:7: note: forward declaration of ‘class rl::context’
   93 | class context
      |       ^~~~~~~
/usr/include/relacy/stdlib/condition_variable.hpp:249:19: error: invalid use of incomplete type ‘class rl::context’
  249 |         impl_ = c.condvar_ctor(allow_spurious_wakeups);
      |                 ~~^~~~~~~~~~~~
/usr/include/relacy/context_base.hpp:93:7: note: forward declaration of ‘class rl::context’
   93 | class context
      |       ^~~~~~~
/usr/include/relacy/stdlib/condition_variable.hpp: In instantiation of ‘void rl::condvar<tag_t>::deinit(int) [with tag_t = rl::condvar_tag_win]’:
/usr/include/relacy/stdlib/windows.hpp:305:15:   required from here
/usr/include/relacy/stdlib/condition_variable.hpp:256:11: error: invalid use of incomplete type ‘class rl::context’
  256 |         c.condvar_dtor(impl_);
      |         ~~^~~~~~~~~~~~
/usr/include/relacy/context_base.hpp:93:7: note: forward declaration of ‘class rl::context’
   93 | class context
      |       ^~~~~~~
/usr/include/relacy/stdlib/semaphore.hpp: In instantiation of ‘void rl::semaphore<tag_t>::init(bool, unsigned int, unsigned int, int) [with tag_t = rl::sem_tag_pthread]’:
/usr/include/relacy/stdlib/pthread.hpp:71:15:   required from here
/usr/include/relacy/stdlib/semaphore.hpp:302:9: error: invalid use of incomplete type ‘class rl::context’
  302 |         RL_ASSERT_IMPL(0 == impl_, test_result_double_initialization_of_semaphore, "", info);
      |         ^~~~~~~~~~~~~~
/usr/include/relacy/context_base.hpp:93:7: note: forward declaration of ‘class rl::context’
   93 | class context
      |       ^~~~~~~
/usr/include/relacy/stdlib/semaphore.hpp:304:19: error: invalid use of incomplete type ‘class rl::context’
  304 |         impl_ = c.sema_ctor(spurious_wakeups, initial_count, max_count);
      |                 ~~^~~~~~~~~
/usr/include/relacy/context_base.hpp:93:7: note: forward declaration of ‘class rl::context’
   93 | class context
      |       ^~~~~~~
/usr/include/relacy/stdlib/semaphore.hpp: In instantiation of ‘void rl::semaphore<tag_t>::deinit(int) [with tag_t = rl::sem_tag_pthread]’:
/usr/include/relacy/stdlib/pthread.hpp:77:17:   required from here
/usr/include/relacy/stdlib/semaphore.hpp:311:11: error: invalid use of incomplete type ‘class rl::context’
  311 |         c.sema_dtor(impl_);
      |         ~~^~~~~~~~~
/usr/include/relacy/context_base.hpp:93:7: note: forward declaration of ‘class rl::context’
   93 | class context
      |       ^~~~~~~
/usr/include/relacy/stdlib/mutex.hpp: In instantiation of ‘void rl::generic_mutex<type>::init(bool, bool, bool, bool, int) [with type = rl::mutex_tag_pthread_mtx]’:
/usr/include/relacy/stdlib/pthread.hpp:180:12:   required from here
/usr/include/relacy/stdlib/mutex.hpp:516:9: error: invalid use of incomplete type ‘class rl::context’
  516 |         RL_ASSERT_IMPL(0 == impl_, test_result_double_initialization_of_mutex, "", info);
      |         ^~~~~~~~~~~~~~
/usr/include/relacy/context_base.hpp:93:7: note: forward declaration of ‘class rl::context’
   93 | class context
      |       ^~~~~~~
/usr/include/relacy/stdlib/mutex.hpp:518:19: error: invalid use of incomplete type ‘class rl::context’
  518 |         impl_ = c.mutex_ctor(is_rw, is_exclusive_recursive, is_shared_recursive, failing_try_lock);
      |                 ~~^~~~~~~~~~
/usr/include/relacy/context_base.hpp:93:7: note: forward declaration of ‘class rl::context’
   93 | class context
      |       ^~~~~~~
/usr/include/relacy/stdlib/mutex.hpp: In instantiation of ‘void rl::generic_mutex<type>::deinit(int) [with type = rl::mutex_tag_pthread_mtx]’:
/usr/include/relacy/stdlib/pthread.hpp:186:14:   required from here
/usr/include/relacy/stdlib/mutex.hpp:525:11: error: invalid use of incomplete type ‘class rl::context’
  525 |         c.mutex_dtor(impl_);
      |         ~~^~~~~~~~~~
/usr/include/relacy/context_base.hpp:93:7: note: forward declaration of ‘class rl::context’
   93 | class context
      |       ^~~~~~~
/usr/include/relacy/stdlib/mutex.hpp: In instantiation of ‘void rl::generic_mutex<type>::lock_exclusive(int) [with type = rl::mutex_tag_pthread_mtx]’:
/usr/include/relacy/stdlib/pthread.hpp:192:22:   required from here
/usr/include/relacy/stdlib/mutex.hpp:546:22: error: invalid use of incomplete type ‘struct rl::generic_mutex_data’
  546 |         check(info)->lock_exclusive(false, info);
      |         ~~~~~~~~~~~~~^~~~~~~~~~~~~~
/usr/include/relacy/stdlib/mutex.hpp:31:8: note: forward declaration of ‘struct rl::generic_mutex_data’
   31 | struct generic_mutex_data : nocopy<>
      |        ^~~~~~~~~~~~~~~~~~
/usr/include/relacy/stdlib/mutex.hpp: In instantiation of ‘bool rl::generic_mutex<type>::lock_exclusive_timed(int) [with type = rl::mutex_tag_pthread_mtx]’:
/usr/include/relacy/stdlib/pthread.hpp:199:38:   required from here
/usr/include/relacy/stdlib/mutex.hpp:536:29: error: invalid use of incomplete type ‘struct rl::generic_mutex_data’
  536 |         return check(info)->lock_exclusive(true, info);
      |                ~~~~~~~~~~~~~^~~~~~~~~~~~~~
/usr/include/relacy/stdlib/mutex.hpp:31:8: note: forward declaration of ‘struct rl::generic_mutex_data’
   31 | struct generic_mutex_data : nocopy<>
      |        ^~~~~~~~~~~~~~~~~~
/usr/include/relacy/stdlib/mutex.hpp: In instantiation of ‘bool rl::generic_mutex<type>::try_lock_exclusive(int) [with type = rl::mutex_tag_pthread_mtx]’:
/usr/include/relacy/stdlib/pthread.hpp:205:33:   required from here
/usr/include/relacy/stdlib/mutex.hpp:551:29: error: invalid use of incomplete type ‘struct rl::generic_mutex_data’
  551 |         return check(info)->try_lock_exclusive(info);
      |                ~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~
/usr/include/relacy/stdlib/mutex.hpp:31:8: note: forward declaration of ‘struct rl::generic_mutex_data’
   31 | struct generic_mutex_data : nocopy<>
      |        ^~~~~~~~~~~~~~~~~~
/usr/include/relacy/stdlib/mutex.hpp: In instantiation of ‘void rl::generic_mutex<type>::unlock_exclusive(int) [with type = rl::mutex_tag_pthread_mtx]’:
/usr/include/relacy/stdlib/pthread.hpp:210:24:   required from here
/usr/include/relacy/stdlib/mutex.hpp:556:22: error: invalid use of incomplete type ‘struct rl::generic_mutex_data’
  556 |         check(info)->unlock_exclusive(info);
      |         ~~~~~~~~~~~~~^~~~~~~~~~~~~~~~
/usr/include/relacy/stdlib/mutex.hpp:31:8: note: forward declaration of ‘struct rl::generic_mutex_data’
   31 | struct generic_mutex_data : nocopy<>
      |        ^~~~~~~~~~~~~~~~~~
/usr/include/relacy/stdlib/mutex.hpp: In instantiation of ‘void rl::generic_mutex<type>::init(bool, bool, bool, bool, int) [with type = rl::mutex_tag_pthread_rwlock]’:
/usr/include/relacy/stdlib/pthread.hpp:221:15:   required from here
/usr/include/relacy/stdlib/mutex.hpp:516:9: error: invalid use of incomplete type ‘class rl::context’
  516 |         RL_ASSERT_IMPL(0 == impl_, test_result_double_initialization_of_mutex, "", info);
      |         ^~~~~~~~~~~~~~
/usr/include/relacy/context_base.hpp:93:7: note: forward declaration of ‘class rl::context’
   93 | class context
      |       ^~~~~~~
/usr/include/relacy/stdlib/mutex.hpp:518:19: error: invalid use of incomplete type ‘class rl::context’
  518 |         impl_ = c.mutex_ctor(is_rw, is_exclusive_recursive, is_shared_recursive, failing_try_lock);
      |                 ~~^~~~~~~~~~
/usr/include/relacy/context_base.hpp:93:7: note: forward declaration of ‘class rl::context’
   93 | class context
      |       ^~~~~~~
/usr/include/relacy/stdlib/mutex.hpp: In instantiation of ‘void rl::generic_mutex<type>::deinit(int) [with type = rl::mutex_tag_pthread_rwlock]’:
/usr/include/relacy/stdlib/pthread.hpp:227:17:   required from here
/usr/include/relacy/stdlib/mutex.hpp:525:11: error: invalid use of incomplete type ‘class rl::context’
  525 |         c.mutex_dtor(impl_);
      |         ~~^~~~~~~~~~
/usr/include/relacy/context_base.hpp:93:7: note: forward declaration of ‘class rl::context’
   93 | class context
      |       ^~~~~~~
/usr/include/relacy/stdlib/mutex.hpp: In instantiation of ‘void rl::generic_mutex<type>::lock_shared(int) [with type = rl::mutex_tag_pthread_rwlock]’:
/usr/include/relacy/stdlib/pthread.hpp:233:22:   required from here
/usr/include/relacy/stdlib/mutex.hpp:561:22: error: invalid use of incomplete type ‘struct rl::generic_mutex_data’
  561 |         check(info)->lock_shared(info);
      |         ~~~~~~~~~~~~~^~~~~~~~~~~
/usr/include/relacy/stdlib/mutex.hpp:31:8: note: forward declaration of ‘struct rl::generic_mutex_data’
   31 | struct generic_mutex_data : nocopy<>
      |        ^~~~~~~~~~~~~~~~~~
/usr/include/relacy/stdlib/mutex.hpp: In instantiation of ‘bool rl::generic_mutex<type>::try_lock_shared(int) [with type = rl::mutex_tag_pthread_rwlock]’:
/usr/include/relacy/stdlib/pthread.hpp:239:37:   required from here
/usr/include/relacy/stdlib/mutex.hpp:566:29: error: invalid use of incomplete type ‘struct rl::generic_mutex_data’
  566 |         return check(info)->try_lock_shared(info);
      |                ~~~~~~~~~~~~~^~~~~~~~~~~~~~~
/usr/include/relacy/stdlib/mutex.hpp:31:8: note: forward declaration of ‘struct rl::generic_mutex_data’
   31 | struct generic_mutex_data : nocopy<>
      |        ^~~~~~~~~~~~~~~~~~
/usr/include/relacy/stdlib/mutex.hpp: In instantiation of ‘void rl::generic_mutex<type>::lock_exclusive(int) [with type = rl::mutex_tag_pthread_rwlock]’:
/usr/include/relacy/stdlib/pthread.hpp:245:25:   required from here
/usr/include/relacy/stdlib/mutex.hpp:546:22: error: invalid use of incomplete type ‘struct rl::generic_mutex_data’
  546 |         check(info)->lock_exclusive(false, info);
      |         ~~~~~~~~~~~~~^~~~~~~~~~~~~~
/usr/include/relacy/stdlib/mutex.hpp:31:8: note: forward declaration of ‘struct rl::generic_mutex_data’
   31 | struct generic_mutex_data : nocopy<>
      |        ^~~~~~~~~~~~~~~~~~
/usr/include/relacy/stdlib/mutex.hpp: In instantiation of ‘bool rl::generic_mutex<type>::try_lock_exclusive(int) [with type = rl::mutex_tag_pthread_rwlock]’:
/usr/include/relacy/stdlib/pthread.hpp:251:40:   required from here
/usr/include/relacy/stdlib/mutex.hpp:551:29: error: invalid use of incomplete type ‘struct rl::generic_mutex_data’
  551 |         return check(info)->try_lock_exclusive(info);
      |                ~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~
/usr/include/relacy/stdlib/mutex.hpp:31:8: note: forward declaration of ‘struct rl::generic_mutex_data’
   31 | struct generic_mutex_data : nocopy<>
      |        ^~~~~~~~~~~~~~~~~~
/usr/include/relacy/stdlib/mutex.hpp: In instantiation of ‘void rl::generic_mutex<type>::unlock_exclusive_or_shared(int) [with type = rl::mutex_tag_pthread_rwlock]’:
/usr/include/relacy/stdlib/pthread.hpp:257:37:   required from here
/usr/include/relacy/stdlib/mutex.hpp:576:22: error: invalid use of incomplete type ‘struct rl::generic_mutex_data’
  576 |         check(info)->unlock_exclusive_or_shared(info);
      |         ~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~
/usr/include/relacy/stdlib/mutex.hpp:31:8: note: forward declaration of ‘struct rl::generic_mutex_data’
   31 | struct generic_mutex_data : nocopy<>
      |        ^~~~~~~~~~~~~~~~~~
/usr/include/relacy/stdlib/condition_variable.hpp: In instantiation of ‘void rl::condvar<tag_t>::init(bool, int) [with tag_t = rl::condvar_tag_pthread]’:
/usr/include/relacy/stdlib/pthread.hpp:270:13:   required from here
/usr/include/relacy/stdlib/condition_variable.hpp:247:9: error: invalid use of incomplete type ‘class rl::context’
  247 |         RL_ASSERT_IMPL(0 == impl_, test_result_double_initialization_of_condvar, "", info);
      |         ^~~~~~~~~~~~~~
/usr/include/relacy/context_base.hpp:93:7: note: forward declaration of ‘class rl::context’
   93 | class context
      |       ^~~~~~~
/usr/include/relacy/stdlib/condition_variable.hpp:249:19: error: invalid use of incomplete type ‘class rl::context’
  249 |         impl_ = c.condvar_ctor(allow_spurious_wakeups);
      |                 ~~^~~~~~~~~~~~
/usr/include/relacy/context_base.hpp:93:7: note: forward declaration of ‘class rl::context’
   93 | class context
      |       ^~~~~~~
/usr/include/relacy/stdlib/condition_variable.hpp: In instantiation of ‘void rl::condvar<tag_t>::deinit(int) [with tag_t = rl::condvar_tag_pthread]’:
/usr/include/relacy/stdlib/pthread.hpp:276:15:   required from here
/usr/include/relacy/stdlib/condition_variable.hpp:256:11: error: invalid use of incomplete type ‘class rl::context’
  256 |         c.condvar_dtor(impl_);
      |         ~~^~~~~~~~~~~~
/usr/include/relacy/context_base.hpp:93:7: note: forward declaration of ‘class rl::context’
   93 | class context
      |       ^~~~~~~
/usr/include/relacy/thread_local.hpp: In instantiation of ‘rl::thread_local_var<T>::~thread_local_var() [with T = void*]’:
/usr/include/relacy/context.hpp:1116:13:   required from ‘void rl::delete_impl(type*, int) [with type = thread_local_var<void*>]’
/usr/include/relacy/thread_local.hpp:169:16:   required from here
/usr/include/relacy/thread_local.hpp:117:43: error: invalid use of incomplete type ‘class rl::context’
  117 |         if (is_ctx() && ctx_seq_ == ctx().get_ctx_seq())
      |                                     ~~~~~~^~~~~~~~~~~
/usr/include/relacy/context_base.hpp:93:7: note: forward declaration of ‘class rl::context’
   93 | class context
      |       ^~~~~~~
/usr/include/relacy/stdlib/semaphore.hpp: In instantiation of ‘rl::sema_data* rl::semaphore<tag_t>::check(int) [with tag_t = rl::sem_tag_win]’:
/usr/include/relacy/stdlib/semaphore.hpp:329:9:   required from ‘bool rl::semaphore<tag_t>::post(unsigned int, unsigned int&, int) [with tag_t = rl::sem_tag_win]’
/usr/include/relacy/stdlib/windows.hpp:132:67:   required from here
/usr/include/relacy/stdlib/semaphore.hpp:345:9: error: invalid use of incomplete type ‘class rl::context’
  345 |         RL_ASSERT_IMPL(impl_, test_result_usage_of_non_initialized_semaphore, "", info);
      |         ^~~~~~~~~~~~~~
/usr/include/relacy/context_base.hpp:93:7: note: forward declaration of ‘class rl::context’
   93 | class context
      |       ^~~~~~~
/usr/include/relacy/stdlib/mutex.hpp: In instantiation of ‘rl::generic_mutex_data* rl::generic_mutex<type>::check(int) [with type = rl::mutex_tag_win_cs]’:
/usr/include/relacy/stdlib/mutex.hpp:524:9:   required from ‘void rl::generic_mutex<type>::deinit(int) [with type = rl::mutex_tag_win_cs]’
/usr/include/relacy/stdlib/windows.hpp:194:14:   required from here
/usr/include/relacy/stdlib/mutex.hpp:585:9: error: invalid use of incomplete type ‘class rl::context’
  585 |         RL_ASSERT_IMPL(impl_, test_result_usage_of_non_initialized_mutex, "", info);
      |         ^~~~~~~~~~~~~~
/usr/include/relacy/context_base.hpp:93:7: note: forward declaration of ‘class rl::context’
   93 | class context
      |       ^~~~~~~
/usr/include/relacy/stdlib/mutex.hpp: In instantiation of ‘rl::generic_mutex_data* rl::generic_mutex<type>::check(int) [with type = rl::mutex_tag_win_srwl]’:
/usr/include/relacy/stdlib/mutex.hpp:546:9:   required from ‘void rl::generic_mutex<type>::lock_exclusive(int) [with type = rl::mutex_tag_win_srwl]’
/usr/include/relacy/stdlib/windows.hpp:222:25:   required from here
/usr/include/relacy/stdlib/mutex.hpp:585:9: error: invalid use of incomplete type ‘class rl::context’
  585 |         RL_ASSERT_IMPL(impl_, test_result_usage_of_non_initialized_mutex, "", info);
      |         ^~~~~~~~~~~~~~
/usr/include/relacy/context_base.hpp:93:7: note: forward declaration of ‘class rl::context’
   93 | class context
      |       ^~~~~~~
/usr/include/relacy/stdlib/mutex.hpp: In instantiation of ‘rl::generic_mutex_data* rl::generic_mutex<type>::check(int) [with type = rl::mutex_tag_win_mutex]’:
/usr/include/relacy/stdlib/mutex.hpp:546:9:   required from ‘void rl::generic_mutex<type>::lock_exclusive(int) [with type = rl::mutex_tag_win_mutex]’
/usr/include/relacy/stdlib/windows.hpp:257:28:   required from here
/usr/include/relacy/stdlib/mutex.hpp:585:9: error: invalid use of incomplete type ‘class rl::context’
  585 |         RL_ASSERT_IMPL(impl_, test_result_usage_of_non_initialized_mutex, "", info);
      |         ^~~~~~~~~~~~~~
/usr/include/relacy/context_base.hpp:93:7: note: forward declaration of ‘class rl::context’
   93 | class context
      |       ^~~~~~~
/usr/include/relacy/stdlib/condition_variable.hpp: In instantiation of ‘void rl::condvar<tag_t>::check(int) [with tag_t = rl::condvar_tag_win]’:
/usr/include/relacy/stdlib/condition_variable.hpp:275:9:   required from ‘rl::sema_wakeup_reason rl::condvar<tag_t>::wait(lock_t&, bool, int) [with lock_t = rl::generic_mutex<rl::mutex_tag_win_cs>; tag_t = rl::condvar_tag_win]’
/usr/include/relacy/stdlib/windows.hpp:281:13:   required from here
/usr/include/relacy/stdlib/condition_variable.hpp:293:9: error: invalid use of incomplete type ‘class rl::context’
  293 |         RL_ASSERT_IMPL(impl_, test_result_usage_of_non_initialized_condvar, "", info);
      |         ^~~~~~~~~~~~~~
/usr/include/relacy/context_base.hpp:93:7: note: forward declaration of ‘class rl::context’
   93 | class context
      |       ^~~~~~~
/usr/include/relacy/stdlib/semaphore.hpp: In instantiation of ‘rl::sema_data* rl::semaphore<tag_t>::check(int) [with tag_t = rl::sem_tag_pthread]’:
/usr/include/relacy/stdlib/semaphore.hpp:310:9:   required from ‘void rl::semaphore<tag_t>::deinit(int) [with tag_t = rl::sem_tag_pthread]’
/usr/include/relacy/stdlib/pthread.hpp:77:17:   required from here
/usr/include/relacy/stdlib/semaphore.hpp:345:9: error: invalid use of incomplete type ‘class rl::context’
  345 |         RL_ASSERT_IMPL(impl_, test_result_usage_of_non_initialized_semaphore, "", info);
      |         ^~~~~~~~~~~~~~
/usr/include/relacy/context_base.hpp:93:7: note: forward declaration of ‘class rl::context’
   93 | class context
      |       ^~~~~~~
/usr/include/relacy/stdlib/mutex.hpp: In instantiation of ‘rl::generic_mutex_data* rl::generic_mutex<type>::check(int) [with type = rl::mutex_tag_pthread_mtx]’:
/usr/include/relacy/stdlib/mutex.hpp:524:9:   required from ‘void rl::generic_mutex<type>::deinit(int) [with type = rl::mutex_tag_pthread_mtx]’
/usr/include/relacy/stdlib/pthread.hpp:186:14:   required from here
/usr/include/relacy/stdlib/mutex.hpp:585:9: error: invalid use of incomplete type ‘class rl::context’
  585 |         RL_ASSERT_IMPL(impl_, test_result_usage_of_non_initialized_mutex, "", info);
      |         ^~~~~~~~~~~~~~
/usr/include/relacy/context_base.hpp:93:7: note: forward declaration of ‘class rl::context’
   93 | class context
      |       ^~~~~~~
/usr/include/relacy/stdlib/mutex.hpp: In instantiation of ‘rl::generic_mutex_data* rl::generic_mutex<type>::check(int) [with type = rl::mutex_tag_pthread_rwlock]’:
/usr/include/relacy/stdlib/mutex.hpp:524:9:   required from ‘void rl::generic_mutex<type>::deinit(int) [with type = rl::mutex_tag_pthread_rwlock]’
/usr/include/relacy/stdlib/pthread.hpp:227:17:   required from here
/usr/include/relacy/stdlib/mutex.hpp:585:9: error: invalid use of incomplete type ‘class rl::context’
  585 |         RL_ASSERT_IMPL(impl_, test_result_usage_of_non_initialized_mutex, "", info);
      |         ^~~~~~~~~~~~~~
/usr/include/relacy/context_base.hpp:93:7: note: forward declaration of ‘class rl::context’
   93 | class context
      |       ^~~~~~~
/usr/include/relacy/stdlib/condition_variable.hpp: In instantiation of ‘void rl::condvar<tag_t>::check(int) [with tag_t = rl::condvar_tag_pthread]’:
/usr/include/relacy/stdlib/condition_variable.hpp:255:9:   required from ‘void rl::condvar<tag_t>::deinit(int) [with tag_t = rl::condvar_tag_pthread]’
/usr/include/relacy/stdlib/pthread.hpp:276:15:   required from here
/usr/include/relacy/stdlib/condition_variable.hpp:293:9: error: invalid use of incomplete type ‘class rl::context’
  293 |         RL_ASSERT_IMPL(impl_, test_result_usage_of_non_initialized_condvar, "", info);
      |         ^~~~~~~~~~~~~~
/usr/include/relacy/context_base.hpp:93:7: note: forward declaration of ‘class rl::context’
   93 | class context
      |       ^~~~~~~
/usr/include/relacy/stdlib/mutex.hpp: In instantiation of ‘rl::sema_wakeup_reason rl::generic_mutex<type>::wait(bool, bool, int) [with type = rl::mutex_tag_pthread_mtx]’:
/usr/include/relacy/stdlib/mutex.hpp:590:32:   required from here
/usr/include/relacy/stdlib/mutex.hpp:594:30: error: invalid use of incomplete type ‘struct rl::generic_mutex_data’
  594 |             if (check(info)->try_lock_exclusive(info))
      |                 ~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~
/usr/include/relacy/stdlib/mutex.hpp:31:8: note: forward declaration of ‘struct rl::generic_mutex_data’
   31 | struct generic_mutex_data : nocopy<>
      |        ^~~~~~~~~~~~~~~~~~
/usr/include/relacy/stdlib/mutex.hpp:601:30: error: invalid use of incomplete type ‘struct rl::generic_mutex_data’
  601 |             if (check(info)->lock_exclusive(is_timed, info))
      |                 ~~~~~~~~~~~~~^~~~~~~~~~~~~~
/usr/include/relacy/stdlib/mutex.hpp:31:8: note: forward declaration of ‘struct rl::generic_mutex_data’
   31 | struct generic_mutex_data : nocopy<>
      |        ^~~~~~~~~~~~~~~~~~
/usr/include/relacy/stdlib/mutex.hpp: In instantiation of ‘bool rl::generic_mutex<type>::signal(int) [with type = rl::mutex_tag_pthread_mtx]’:
/usr/include/relacy/stdlib/mutex.hpp:609:18:   required from here
/usr/include/relacy/stdlib/mutex.hpp:611:22: error: invalid use of incomplete type ‘struct rl::generic_mutex_data’
  611 |         check(info)->unlock_exclusive(info);
      |         ~~~~~~~~~~~~~^~~~~~~~~~~~~~~~
/usr/include/relacy/stdlib/mutex.hpp:31:8: note: forward declaration of ‘struct rl::generic_mutex_data’
   31 | struct generic_mutex_data : nocopy<>
      |        ^~~~~~~~~~~~~~~~~~
/usr/include/relacy/stdlib/mutex.hpp: In instantiation of ‘bool rl::generic_mutex<type>::is_signaled(int) [with type = rl::mutex_tag_pthread_mtx]’:
/usr/include/relacy/stdlib/mutex.hpp:615:18:   required from here
/usr/include/relacy/stdlib/mutex.hpp:617:29: error: invalid use of incomplete type ‘struct rl::generic_mutex_data’
  617 |         return check(info)->is_signaled(info);
      |                ~~~~~~~~~~~~~^~~~~~~~~~~
/usr/include/relacy/stdlib/mutex.hpp:31:8: note: forward declaration of ‘struct rl::generic_mutex_data’
   31 | struct generic_mutex_data : nocopy<>
      |        ^~~~~~~~~~~~~~~~~~
/usr/include/relacy/stdlib/mutex.hpp: In instantiation of ‘void rl::generic_mutex<type>::memory_acquire(int) [with type = rl::mutex_tag_pthread_mtx]’:
/usr/include/relacy/stdlib/mutex.hpp:620:18:   required from here
/usr/include/relacy/stdlib/mutex.hpp:622:22: error: invalid use of incomplete type ‘struct rl::generic_mutex_data’
  622 |         check(info)->memory_acquire(info);
      |         ~~~~~~~~~~~~~^~~~~~~~~~~~~~
/usr/include/relacy/stdlib/mutex.hpp:31:8: note: forward declaration of ‘struct rl::generic_mutex_data’
   31 | struct generic_mutex_data : nocopy<>
      |        ^~~~~~~~~~~~~~~~~~
/usr/include/relacy/stdlib/mutex.hpp: In instantiation of ‘void* rl::generic_mutex<type>::prepare_wait(int) [with type = rl::mutex_tag_pthread_mtx]’:
/usr/include/relacy/stdlib/mutex.hpp:625:19:   required from here
/usr/include/relacy/stdlib/mutex.hpp:627:29: error: invalid use of incomplete type ‘struct rl::generic_mutex_data’
  627 |         return check(info)->prepare_wait(info);
      |                ~~~~~~~~~~~~~^~~~~~~~~~~~
/usr/include/relacy/stdlib/mutex.hpp:31:8: note: forward declaration of ‘struct rl::generic_mutex_data’
   31 | struct generic_mutex_data : nocopy<>
      |        ^~~~~~~~~~~~~~~~~~
/usr/include/relacy/stdlib/mutex.hpp: In instantiation of ‘void rl::generic_mutex<type>::deinit(int) [with type = rl::mutex_tag_win_mutex]’:
/usr/include/relacy/stdlib/mutex.hpp:521:10:   required from here
/usr/include/relacy/stdlib/mutex.hpp:525:11: error: invalid use of incomplete type ‘class rl::context’
  525 |         c.mutex_dtor(impl_);
      |         ~~^~~~~~~~~~
/usr/include/relacy/context_base.hpp:93:7: note: forward declaration of ‘class rl::context’
   93 | class context
      |       ^~~~~~~
/usr/include/relacy/stdlib/mutex.hpp: In instantiation of ‘rl::sema_wakeup_reason rl::generic_mutex<type>::wait(bool, bool, int) [with type = rl::mutex_tag_win_mutex]’:
/usr/include/relacy/stdlib/mutex.hpp:590:32:   required from here
/usr/include/relacy/stdlib/mutex.hpp:594:30: error: invalid use of incomplete type ‘struct rl::generic_mutex_data’
  594 |             if (check(info)->try_lock_exclusive(info))
      |                 ~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~
/usr/include/relacy/stdlib/mutex.hpp:31:8: note: forward declaration of ‘struct rl::generic_mutex_data’
   31 | struct generic_mutex_data : nocopy<>
      |        ^~~~~~~~~~~~~~~~~~
/usr/include/relacy/stdlib/mutex.hpp:601:30: error: invalid use of incomplete type ‘struct rl::generic_mutex_data’
  601 |             if (check(info)->lock_exclusive(is_timed, info))
      |                 ~~~~~~~~~~~~~^~~~~~~~~~~~~~
/usr/include/relacy/stdlib/mutex.hpp:31:8: note: forward declaration of ‘struct rl::generic_mutex_data’
   31 | struct generic_mutex_data : nocopy<>
      |        ^~~~~~~~~~~~~~~~~~
/usr/include/relacy/stdlib/mutex.hpp: In instantiation of ‘bool rl::generic_mutex<type>::signal(int) [with type = rl::mutex_tag_win_mutex]’:
/usr/include/relacy/stdlib/mutex.hpp:609:18:   required from here
/usr/include/relacy/stdlib/mutex.hpp:611:22: error: invalid use of incomplete type ‘struct rl::generic_mutex_data’
  611 |         check(info)->unlock_exclusive(info);
      |         ~~~~~~~~~~~~~^~~~~~~~~~~~~~~~
/usr/include/relacy/stdlib/mutex.hpp:31:8: note: forward declaration of ‘struct rl::generic_mutex_data’
   31 | struct generic_mutex_data : nocopy<>
      |        ^~~~~~~~~~~~~~~~~~
/usr/include/relacy/stdlib/mutex.hpp: In instantiation of ‘bool rl::generic_mutex<type>::is_signaled(int) [with type = rl::mutex_tag_win_mutex]’:
/usr/include/relacy/stdlib/mutex.hpp:615:18:   required from here
/usr/include/relacy/stdlib/mutex.hpp:617:29: error: invalid use of incomplete type ‘struct rl::generic_mutex_data’
  617 |         return check(info)->is_signaled(info);
      |                ~~~~~~~~~~~~~^~~~~~~~~~~
/usr/include/relacy/stdlib/mutex.hpp:31:8: note: forward declaration of ‘struct rl::generic_mutex_data’
   31 | struct generic_mutex_data : nocopy<>
      |        ^~~~~~~~~~~~~~~~~~
/usr/include/relacy/stdlib/mutex.hpp: In instantiation of ‘void rl::generic_mutex<type>::memory_acquire(int) [with type = rl::mutex_tag_win_mutex]’:
/usr/include/relacy/stdlib/mutex.hpp:620:18:   required from here
/usr/include/relacy/stdlib/mutex.hpp:622:22: error: invalid use of incomplete type ‘struct rl::generic_mutex_data’
  622 |         check(info)->memory_acquire(info);
      |         ~~~~~~~~~~~~~^~~~~~~~~~~~~~
/usr/include/relacy/stdlib/mutex.hpp:31:8: note: forward declaration of ‘struct rl::generic_mutex_data’
   31 | struct generic_mutex_data : nocopy<>
      |        ^~~~~~~~~~~~~~~~~~
/usr/include/relacy/stdlib/mutex.hpp: In instantiation of ‘void* rl::generic_mutex<type>::prepare_wait(int) [with type = rl::mutex_tag_win_mutex]’:
/usr/include/relacy/stdlib/mutex.hpp:625:19:   required from here
/usr/include/relacy/stdlib/mutex.hpp:627:29: error: invalid use of incomplete type ‘struct rl::generic_mutex_data’
  627 |         return check(info)->prepare_wait(info);
      |                ~~~~~~~~~~~~~^~~~~~~~~~~~
/usr/include/relacy/stdlib/mutex.hpp:31:8: note: forward declaration of ‘struct rl::generic_mutex_data’
   31 | struct generic_mutex_data : nocopy<>
      |        ^~~~~~~~~~~~~~~~~~
/usr/include/relacy/stdlib/semaphore.hpp: In instantiation of ‘void rl::semaphore<tag_t>::deinit(int) [with tag_t = rl::sem_tag_win]’:
/usr/include/relacy/stdlib/semaphore.hpp:307:10:   required from here
/usr/include/relacy/stdlib/semaphore.hpp:311:11: error: invalid use of incomplete type ‘class rl::context’
  311 |         c.sema_dtor(impl_);
      |         ~~^~~~~~~~~
/usr/include/relacy/context_base.hpp:93:7: note: forward declaration of ‘class rl::context’
   93 | class context
      |       ^~~~~~~

