Teensy 4.1

i.MX RT1062 Cortex-M7 · arm-cortex-m7 · Version 5.0.0
Click failed rows to see compiler output.

c++11

20/21 features (95%)
FeatureMacroValueCompilesStatus
language
alias_templates __cpp_alias_templates 200704 supported
attributes __cpp_attributes 200809 supported
constexpr __cpp_constexpr 201603 supported
decltype __cpp_decltype 200707 supported
delegating_constructors __cpp_delegating_constructors 200604 supported
exceptions __cpp_exceptions unsupported
src/cpp11__exceptions.cpp:8:53: error: exception handling disabled, use '-fexceptions' to enable
    8 | auto _test_cpp11__exceptions() -> int { try { throw 42; } catch (int e) { return e - 42; } return 1; }
      |                                                     ^~
src/cpp11__exceptions.cpp:8:82: error: 'e' was not declared in this scope
    8 | auto _test_cpp11__exceptions() -> int { try { throw 42; } catch (int e) { return e - 42; } return 1; }
      |                                     
inheriting_constructors __cpp_inheriting_constructors 201511 supported
initializer_lists __cpp_initializer_lists 200806 supported
lambdas __cpp_lambdas 200907 supported
nsdmi __cpp_nsdmi 200809 supported
range_based_for __cpp_range_based_for 201603 supported
raw_strings __cpp_raw_strings 200710 supported
ref_qualifiers __cpp_ref_qualifiers 200710 supported
rvalue_references __cpp_rvalue_references 200610 supported
static_assert_ __cpp_static_assert 201411 supported
threadsafe_static_init __cpp_threadsafe_static_init unreported
unicode_characters __cpp_unicode_characters 201411 supported
unicode_literals __cpp_unicode_literals 200710 supported
user_defined_literals __cpp_user_defined_literals 200809 supported
variadic_templates __cpp_variadic_templates 200704 supported
library
allocator_traits_is_always_equal __cpp_lib_allocator_traits_is_always_equal 201411 supported

c++14

28/29 features (97%)
FeatureMacroValueCompilesStatus
language
aggregate_nsdmi __cpp_aggregate_nsdmi 201304 supported
binary_literals __cpp_binary_literals 201304 supported
decltype_auto __cpp_decltype_auto 201304 supported
generic_lambdas __cpp_generic_lambdas 201304 supported
init_captures __cpp_init_captures 201304 supported
return_type_deduction __cpp_return_type_deduction 201304 supported
sized_deallocation __cpp_sized_deallocation 201309 supported
variable_templates __cpp_variable_templates 201304 supported
library
chrono_udls __cpp_lib_chrono_udls 201304 supported
complex_udls __cpp_lib_complex_udls 201309 supported
exchange_function __cpp_lib_exchange_function 201304 supported
generic_associative_lookup __cpp_lib_generic_associative_lookup 201304 supported
integer_sequence __cpp_lib_integer_sequence 201304 supported
integral_constant_callable __cpp_lib_integral_constant_callable 201304 supported
is_final __cpp_lib_is_final 201402 supported
is_null_pointer __cpp_lib_is_null_pointer 201309 supported
make_reverse_iterator __cpp_lib_make_reverse_iterator 201402 supported
make_unique __cpp_lib_make_unique 201304 supported
null_iterators __cpp_lib_null_iterators 201304 supported
quoted_string_io __cpp_lib_quoted_string_io 201304 supported
result_of_sfinae __cpp_lib_result_of_sfinae 201210 supported
robust_nonmodifying_seq_ops __cpp_lib_robust_nonmodifying_seq_ops 201304 supported
shared_timed_mutex __cpp_lib_shared_timed_mutex unsupported
src/cpp14__shared_timed_mutex.cpp:9:54: error: 'shared_timed_mutex' is not a member of 'std'
    9 | auto _test_cpp14__shared_timed_mutex() -> int { std::shared_timed_mutex m; return 0; }
      |                                                      ^~~~~~~~~~~~~~~~~~
    8 | #include 
  +++ |+#include 
    9 | auto _test_cpp14__shared_timed_mutex() -> int { std::shared_timed_mutex m; return 0; }
string_udls __cpp_lib_string_udls 201304 supported
to_chars __cpp_lib_to_chars unreported
transformation_trait_aliases __cpp_lib_transformation_trait_aliases 201304 supported
transparent_operators __cpp_lib_transparent_operators 201510 supported
tuple_element_t __cpp_lib_tuple_element_t 201402 supported
tuples_by_type __cpp_lib_tuples_by_type 201304 supported

c++17

62/67 features (93%)

Tentpole features — 5 complete, 0 good, 3 partial, 0 unsupported

FeatureStatusCoverage
Structured bindings complete required 1/1
if constexpr complete required 1/1
Fold expressions complete required 1/1
Class template argument deduction complete required 1/1
std::optional partial required 1/1, extensions 0/2
std::variant partial required 1/1, extensions 0/1
std::string_view partial required 1/1, extensions 0/2
std::filesystem complete required 1/1
FeatureMacroValueCompilesStatus
attribute
fallthrough __has_cpp_attribute(fallthrough) 201603 supported
maybe_unused __has_cpp_attribute(maybe_unused) 201603 supported
language
aggregate_bases __cpp_aggregate_bases unreported
aligned_new __cpp_aligned_new 201606 supported
capture_star_this __cpp_capture_star_this 201603 supported
deduction_guides __cpp_deduction_guides 201703 supported
deleted_function __cpp_deleted_function unreported
enumerator_attributes __cpp_enumerator_attributes 201411 supported
fold_expressions __cpp_fold_expressions 201603 supported
guaranteed_copy_elision __cpp_guaranteed_copy_elision 201606 supported
hex_float __cpp_hex_float 201603 supported
if_constexpr __cpp_if_constexpr 201606 supported
inline_variables __cpp_inline_variables 201606 supported
namespace_attributes __cpp_namespace_attributes 201411 supported
noexcept_function_type __cpp_noexcept_function_type 201510 supported
nontype_template_args __cpp_nontype_template_args 201411 macro_lies
src/cpp17__nontype_template_args.cpp:9:12: error: non-type template parameters of class type only available with '-std=c++20' or '-std=gnu++20'
    9 | template constexpr int get() { return s.v; }
      |            ^
src/cpp17__nontype_template_args.cpp:10:69: error: no matching function for call to 'get()'
   10 | auto _test_cpp17__nontype_template_args() -> int { return get() - 42; }
      |                                                           ~~~~~~~~~~^~
    9 | temp
nontype_template_parameter_auto __cpp_nontype_template_parameter_auto 201606 supported
structured_bindings __cpp_structured_bindings 201606 supported
template_template_args __cpp_template_template_args 201611 supported
variadic_using __cpp_variadic_using 201611 supported
library
addressof_constexpr __cpp_lib_addressof_constexpr 201603 supported
any __cpp_lib_any 201606 supported
apply __cpp_lib_apply 201603 supported
array_constexpr __cpp_lib_array_constexpr 201803 supported
as_const __cpp_lib_as_const 201510 supported
atomic_is_always_lock_free __cpp_lib_atomic_is_always_lock_free 201603 supported
bool_constant __cpp_lib_bool_constant 201505 supported
boyer_moore_searcher __cpp_lib_boyer_moore_searcher 201603 supported
byte __cpp_lib_byte 201603 supported
chrono __cpp_lib_chrono 201611 supported
clamp __cpp_lib_clamp 201603 supported
enable_shared_from_this __cpp_lib_enable_shared_from_this 201603 supported
execution __cpp_lib_execution 201902 supported
filesystem __cpp_lib_filesystem 201703 supported
freestanding_charconv __cpp_lib_freestanding_charconv unreported
gcd_lcm __cpp_lib_gcd_lcm 201606 supported
hardware_interference_size __cpp_lib_hardware_interference_size unsupported
src/cpp17__hardware_interference_size.cpp:9:69: error: 'hardware_destructive_interference_size' is not a member of 'std'
    9 | auto _test_cpp17__hardware_interference_size() -> int { return std::hardware_destructive_interference_size > 0 ? 0 : 1; }
      |                                                                     ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
has_unique_object_representations __cpp_lib_has_unique_object_representations 201606 supported
hypot __cpp_lib_hypot 201603 supported
incomplete_container_elements __cpp_lib_incomplete_container_elements 201505 supported
invoke __cpp_lib_invoke 201411 supported
is_aggregate __cpp_lib_is_aggregate 201703 supported
is_invocable __cpp_lib_is_invocable 201703 supported
is_swappable __cpp_lib_is_swappable 201603 supported
launder __cpp_lib_launder 201606 supported
logical_traits __cpp_lib_logical_traits 201510 supported
make_from_tuple __cpp_lib_make_from_tuple 201606 supported
map_try_emplace __cpp_lib_map_try_emplace 201411 supported
math_special_functions __cpp_lib_math_special_functions 201603 supported
memory_resource __cpp_lib_memory_resource 1 supported
node_extract __cpp_lib_node_extract 201606 supported
nonmember_container_access __cpp_lib_nonmember_container_access 201411 supported
not_fn __cpp_lib_not_fn 201603 supported
optional __cpp_lib_optional 201606 supported
parallel_algorithm __cpp_lib_parallel_algorithm 201603 supported
raw_memory_algorithms __cpp_lib_raw_memory_algorithms 201606 supported
sample __cpp_lib_sample 201603 supported
scoped_lock __cpp_lib_scoped_lock unsupported
src/cpp17__scoped_lock.cpp:9:10: error: 'mutex' is not a member of 'std'
    9 |     std::mutex m;
      |          ^~~~~
    7 | #include 
  +++ |+#include 
    8 | auto _test_cpp17__scoped_lock() -> int {
src/cpp17__scoped_lock.cpp:10:27: error: 'm' was not declared in this scope; did you mean 'tm'?
   10 |     std::scoped_lock lock(m);
      |                           ^
      |                           tm
shared_mutex __cpp_lib_shared_mutex unsupported
src/cpp17__shared_mutex.cpp:9:48: error: 'shared_mutex' is not a member of 'std'
    9 | auto _test_cpp17__shared_mutex() -> int { std::shared_mutex m; return 0; }
      |                                                ^~~~~~~~~~~~
    8 | #include 
  +++ |+#include 
    9 | auto _test_cpp17__shared_mutex() -> int { std::shared_mutex m; return 0; }
In file included from /home/runner/.platformio/packages/toolchain-gccarmnoneeabi-teensy/arm-none-eabi/include/c++/11.3.1/
shared_ptr_arrays __cpp_lib_shared_ptr_arrays 201611 macro_lies
                 from src/cpp17__shared_ptr_arrays.cpp:7:
/home/runner/.platformio/packages/toolchain-gccarmnoneeabi-teensy/arm-none-eabi/include/c++/11.3.1/bits/shared_ptr.h:860:21: error: static assertion failed: make_shared not supported
  860 |       static_assert(!is_array<_Tp>::value, "make_shared not supported");
      |                     ^~~~~~~~~~~~~~~~~~~~~
shared_ptr_weak_type __cpp_lib_shared_ptr_weak_type 201606 supported
string_view __cpp_lib_string_view 201803 supported
type_trait_variable_templates __cpp_lib_type_trait_variable_templates 201510 supported
uncaught_exceptions __cpp_lib_uncaught_exceptions 201411 supported
unordered_map_try_emplace __cpp_lib_unordered_map_try_emplace 201411 supported
variant __cpp_lib_variant 202102 supported
void_t __cpp_lib_void_t 201411 supported

c++20

18/82 features (22%)

Tentpole features — 1 complete, 0 good, 0 partial, 7 unsupported

FeatureStatusCoverage
Concepts unsupported __cpp_concepts, __cpp_lib_concepts not supported
Ranges unsupported __cpp_lib_ranges, __cpp_concepts not supported
std::format unsupported __cpp_lib_format not supported
Coroutines unsupported __cpp_impl_coroutine, __cpp_lib_coroutine not supported
Modules complete required 1/1, extensions 1/1
std::span unsupported __cpp_lib_span not supported
std::jthread unsupported __cpp_lib_jthread not supported
Three-way comparison unsupported __cpp_impl_three_way_comparison, __cpp_lib_three_way_comparison not supported
FeatureMacroValueCompilesStatus
attribute
attr_likely __has_cpp_attribute(likely) 201803 supported
attr_unlikely __has_cpp_attribute(unlikely) 201803 supported
language
aggregate_paren_init __cpp_aggregate_paren_init unsupported
src/cpp20__aggregate_paren_init.cpp:9:59: error: no matching function for call to 'S::S(int, int)'
    9 | auto _test_cpp20__aggregate_paren_init() -> int { S s(1, 2); return s.x + s.y - 3; }
      |                                                           ^
    8 | struct S { int x; int y; };
      |        ^
char8_t_lang __cpp_char8_t unsupported
src/cpp20__char8_t_lang.cpp:8:43: error: 'char8_t' was not declared in this scope; did you mean 'wchar_t'?
    8 | auto _test_cpp20__char8_t_lang() -> int { char8_t c = u8'A'; return c == u8'A' ? 0 : 1; }
      |                                           ^~~~~~~
      |                                           wchar_t
src/cpp20__char8_t_lang.cpp:8:69: error: 'c' was not declared in this scope
    8 | auto _test_cpp20__char8_t_lang() -> int { char8_t c = u8'A'; return c == u8'A' ? 0 : 1; }
     
concepts __cpp_concepts unsupported
src/cpp20__concepts.cpp:11:1: error: 'concept' does not name a type
   11 | concept Addable = requires(T a, T b) { { a + b } -> std::convertible_to; };
      | ^~~~~~~
src/cpp20__concepts.cpp:13:10: error: 'Addable' has not been declared
   13 | template
      |          ^~~~~~~
src/cpp20__concepts.cpp:14:10: error: 'T' was not declared in this scope
   14 | auto add(T a, T b) -> T { return a + b; }
      |          ^
src/cpp20__concepts.cpp:14:15: error: 'T' was not declared in th
conditional_explicit __cpp_conditional_explicit unreported
consteval __cpp_consteval unsupported
src/cpp20__consteval.cpp:8:1: error: 'consteval' does not name a type; did you mean 'constexpr'?
    8 | consteval int square(int x) { return x * x; }
      | ^~~~~~~~~
      | constexpr
src/cpp20__consteval.cpp:11:25: error: 'square' was not declared in this scope
   11 |     constexpr int val = square(5);
      |                         ^~~~~~
constexpr_dynamic_alloc __cpp_constexpr_dynamic_alloc unsupported
src/cpp20__constexpr_dynamic_alloc.cpp:8:40: error: call to non-'constexpr' function 'void* operator new(std::size_t)'
    8 | constexpr int f() { int* p = new int(42); int v = *p; delete p; return v; }
      |                                        ^
In file included from /home/runner/.platformio/packages/toolchain-gccarmnoneeabi-teensy/arm-none-eabi/include/c++/11.3.1/functional:53,
                 from /home/runner/.platformio/packages/framework-arduinoteensy/cores/teensy4/inplace_function.h
constexpr_in_decltype __cpp_constexpr_in_decltype unreported
constinit __cpp_constinit unsupported
src/cpp20__constinit.cpp:8:1: warning: identifier 'constinit' is a keyword in C++20 [-Wc++20-compat]
    8 | constinit int global_val = 42;
      | ^~~~~~~~~
src/cpp20__constinit.cpp:8:1: error: 'constinit' does not name a type; did you mean 'constrain'?
    8 | constinit int global_val = 42;
      | ^~~~~~~~~
      | constrain
src/cpp20__constinit.cpp:11:12: error: 'global_val' was not declared in this scope
   11 |     return global_val - 42;
      |            ^~~~~~~~~~
cpp_modules __cpp_modules unreported
designated_initializers __cpp_designated_initializers unreported
impl_coroutine __cpp_impl_coroutine unsupported
In file included from src/cpp20__impl_coroutine.cpp:9:
/home/runner/.platformio/packages/toolchain-gccarmnoneeabi-teensy/arm-none-eabi/include/c++/11.3.1/coroutine:334:2: error: #error "the coroutine header requires -fcoroutines"
  334 | #error "the coroutine header requires -fcoroutines"
      |  ^~~~~
impl_destroying_delete __cpp_impl_destroying_delete unsupported
src/cpp20__impl_destroying_delete.cpp:9:53: error: 'std::destroying_delete_t' has not been declared
    9 | struct S { int v; static void operator delete(S* p, std::destroying_delete_t) { p->~S(); ::operator delete(p); } };
      |                                                     ^~~
src/cpp20__impl_destroying_delete.cpp:9:31: error: 'operator delete' takes type 'void*' as first parameter
    9 | struct S { int v; static void operator delete(S* p, std::destroying_delete_t) { p->~S(); ::operat
impl_three_way_comparison __cpp_impl_three_way_comparison unsupported
src/cpp20__impl_three_way_comparison.cpp:9:24: error: declaration of 'operator<=' as non-function
    9 | struct S { int v; auto operator<=>(const S&) const = default; };
      |                        ^~~~~~~~
src/cpp20__impl_three_way_comparison.cpp:9:32: error: expected ';' at end of member declaration
    9 | struct S { int v; auto operator<=>(const S&) const = default; };
      |                                ^~
      |                                  ;
src/cpp20__impl_three_way_compariso
using_enum __cpp_using_enum unsupported
src/cpp20__using_enum.cpp:9:52: error: 'using enum' only available with '-std=c++20' or '-std=gnu++20'
    9 | auto _test_cpp20__using_enum() -> int { using enum Color; return static_cast(Green) == 1 ? 0 : 1; }
      |                                                    ^~~~~
src/cpp20__using_enum.cpp:9:57: error: 'using' with enumeration scope 'enum class Color' only available with '-std=c++20' or '-std=gnu++20'
    9 | auto _test_cpp20__using_enum() -> int { using enum Color; return static
library
algorithm_iterator_requirements __cpp_lib_algorithm_iterator_requirements unreported
assume_aligned __cpp_lib_assume_aligned unsupported
src/cpp20__assume_aligned.cpp:9:91: error: 'assume_aligned' is not a member of 'std'
    9 | auto _test_cpp20__assume_aligned() -> int { alignas(64) int buf[4] = {42}; auto* p = std::assume_aligned<64>(buf); return p[0] - 42; }
      |                                                                                           ^~~~~~~~~~~~~~
atomic_flag_test __cpp_lib_atomic_flag_test unsupported
src/cpp20__atomic_flag_test.cpp:9:95: error: 'struct std::atomic_flag' has no member named 'test'
    9 | auto _test_cpp20__atomic_flag_test() -> int { std::atomic_flag f = ATOMIC_FLAG_INIT; return f.test() ? 1 : 0; }
      |                                                                                               ^~~~
atomic_float __cpp_lib_atomic_float unreported
atomic_lock_free_type_aliases __cpp_lib_atomic_lock_free_type_aliases unsupported
src/cpp20__atomic_lock_free_type_aliases.cpp:9:65: error: 'atomic_signed_lock_free' is not a member of 'std'; did you mean 'atomic_is_lock_free'?
    9 | auto _test_cpp20__atomic_lock_free_type_aliases() -> int { std::atomic_signed_lock_free a{0}; a.store(42); return a.load() - 42; }
      |                                                                 ^~~~~~~~~~~~~~~~~~~~~~~
      |                                                                 atomic_is_lock_free
src/cpp20__atomic_lock_free
atomic_ref __cpp_lib_atomic_ref unsupported
src/cpp20__atomic_ref.cpp:9:57: error: 'atomic_ref' is not a member of 'std'
    9 | auto _test_cpp20__atomic_ref() -> int { int x = 0; std::atomic_ref r(x); r.store(42); return r.load() - 42; }
      |                                                         ^~~~~~~~~~
src/cpp20__atomic_ref.cpp:9:68: error: expected primary-expression before 'int'
    9 | auto _test_cpp20__atomic_ref() -> int { int x = 0; std::atomic_ref r(x); r.store(42); return r.load() - 42; }
      |               
atomic_shared_ptr __cpp_lib_atomic_shared_ptr unsupported
In file included from src/cpp20__atomic_shared_ptr.cpp:8:
/home/runner/.platformio/packages/toolchain-gccarmnoneeabi-teensy/arm-none-eabi/include/c++/11.3.1/atomic:211:21: error: static assertion failed: std::atomic requires a trivially copyable type
  211 |       static_assert(__is_trivially_copyable(_Tp),
      |                     ^~~~~~~~~~~~~~~~~~~~~~~~~~~~
atomic_value_initialization __cpp_lib_atomic_value_initialization unreported
atomic_wait __cpp_lib_atomic_wait unsupported
src/cpp20__atomic_wait.cpp:9:68: error: 'struct std::atomic' has no member named 'wait'
    9 | auto _test_cpp20__atomic_wait() -> int { std::atomic a{42}; a.wait(0); return 0; }
      |                                                                    ^~~~
barrier __cpp_lib_barrier unsupported
src/cpp20__barrier.cpp:9:43: error: 'barrier' is not a member of 'std'
    9 | auto _test_cpp20__barrier() -> int { std::barrier b(1); b.arrive_and_drop(); return 0; }
      |                                           ^~~~~~~
src/cpp20__barrier.cpp:9:57: error: 'b' was not declared in this scope
    9 | auto _test_cpp20__barrier() -> int { std::barrier b(1); b.arrive_and_drop(); return 0; }
      |                                                         ^
bind_front __cpp_lib_bind_front unsupported
src/cpp20__bind_front.cpp:13:22: error: 'bind_front' is not a member of 'std'
   13 |     auto add5 = std::bind_front(add, 5);
      |                      ^~~~~~~~~~
bit_cast __cpp_lib_bit_cast unsupported
src/cpp20__bit_cast.cpp:13:22: error: 'bit_cast' is not a member of 'std'; did you mean 'bad_cast'?
   13 |     auto bits = std::bit_cast(f);
      |                      ^~~~~~~~
      |                      bad_cast
src/cpp20__bit_cast.cpp:13:39: error: expected primary-expression before '>' token
   13 |     auto bits = std::bit_cast(f);
      |                                       ^
bitops __cpp_lib_bitops unsupported
src/cpp20__bitops.cpp:9:17: error: 'popcount' is not a member of 'std'; did you mean 'count'?
    9 |     return std::popcount(0b1010u) - 2;
      |                 ^~~~~~~~
      |                 count
bounded_array_traits __cpp_lib_bounded_array_traits unsupported
src/cpp20__bounded_array_traits.cpp:9:63: error: 'is_bounded_array_v' is not a member of 'std'
    9 | auto _test_cpp20__bounded_array_traits() -> int { return std::is_bounded_array_v && !std::is_bounded_array_v ? 0 : 1; }
      |                                                               ^~~~~~~~~~~~~~~~~~
src/cpp20__bounded_array_traits.cpp:9:82: error: expected primary-expression before 'int'
    9 | auto _test_cpp20__bounded_array_traits() -> int { return std::is_bounded_ar
char8_t_lib __cpp_lib_char8_t unsupported
src/cpp20__char8_t_lib.cpp:9:47: error: 'u8string' is not a member of 'std'
    9 | auto _test_cpp20__char8_t_lib() -> int { std::u8string s = u8"hello"; return s.size() == 5 ? 0 : 1; }
      |                                               ^~~~~~~~
src/cpp20__char8_t_lib.cpp:9:78: error: 's' was not declared in this scope; did you mean 'sq'?
    9 | auto _test_cpp20__char8_t_lib() -> int { std::u8string s = u8"hello"; return s.size() == 5 ? 0 : 1; }
      |                                       
common_reference __cpp_lib_common_reference unsupported
src/cpp20__common_reference.cpp:9:62: error: 'common_reference_t' in namespace 'std' does not name a template type; did you mean 'remove_reference_t'?
    9 | auto _test_cpp20__common_reference() -> int { using T = std::common_reference_t; return std::is_same_v ? 0 : 1; }
      |                                                              ^~~~~~~~~~~~~~~~~~
      |                                                              remove_reference_t
src/cpp20__common_
common_reference_wrapper __cpp_lib_common_reference_wrapper unsupported
src/cpp20__common_reference_wrapper.cpp:10:70: error: 'common_reference_t' in namespace 'std' does not name a template type; did you mean 'remove_reference_t'?
   10 | auto _test_cpp20__common_reference_wrapper() -> int { using T = std::common_reference_t>; return std::is_reference_v ? 0 : 1; }
      |                                                                      ^~~~~~~~~~~~~~~~~~
      |                                                                
concepts_lib __cpp_lib_concepts unsupported
src/cpp20__concepts_lib.cpp:9:10: error: 'std::integral' has not been declared
    9 | template T add(T a, T b) { return a + b; }
      |          ^~~
src/cpp20__concepts_lib.cpp:9:27: error: 'T' does not name a type
    9 | template T add(T a, T b) { return a + b; }
      |                           ^
src/cpp20__concepts_lib.cpp:10:50: error: 'add' was not declared in this scope
   10 | auto _test_cpp20__concepts_lib() -> int { return add(2, 3) - 5; }
      |  
constexpr_algorithms __cpp_lib_constexpr_algorithms unsupported
src/cpp20__constexpr_algorithms.cpp:10:52: error: call to non-'constexpr' function 'void std::sort(_RAIter, _RAIter) [with _RAIter = int*]'
   10 | constexpr auto f() { std::array a{3,1,2}; std::sort(a.begin(), a.end()); return a[0]; }
      |                                           ~~~~~~~~~^~~~~~~~~~~~~~~~~~~~
In file included from /home/runner/.platformio/packages/toolchain-gccarmnoneeabi-teensy/arm-none-eabi/include/c++/11.3.1/functional:65,
                 from /home/runner/.platformio/p
constexpr_complex __cpp_lib_constexpr_complex unreported
constexpr_dynamic_alloc_lib __cpp_lib_constexpr_dynamic_alloc unsupported
src/cpp20__constexpr_dynamic_alloc_lib.cpp:9:41: error: variable 'a' of non-literal type 'std::allocator' in 'constexpr' function
    9 | constexpr int f() { std::allocator a; int* p = a.allocate(1); *p = 42; int v = *p; a.deallocate(p, 1); return v; }
      |                                         ^
In file included from /home/runner/.platformio/packages/toolchain-gccarmnoneeabi-teensy/arm-none-eabi/include/c++/11.3.1/unordered_map:40,
                 from /home/runner/.platformio/p
constexpr_functional __cpp_lib_constexpr_functional unsupported
src/cpp20__constexpr_functional.cpp:10:38: error: non-constant condition for static assertion
   10 | static_assert(std::invoke(add, 2, 3) == 5);
      |               ~~~~~~~~~~~~~~~~~~~~~~~^~~~
src/cpp20__constexpr_functional.cpp:10:26: error: call to non-'constexpr' function 'std::invoke_result_t<_Callable, _Args ...> std::invoke(_Callable&&, _Args&& ...) [with _Callable = int (&)(int, int); _Args = {int, int}; std::invoke_result_t<_Callable, _Args ...> = int]'
   10 | static_assert(std::invo
constexpr_iterator __cpp_lib_constexpr_iterator unreported
constexpr_memory __cpp_lib_constexpr_memory unsupported
src/cpp20__constexpr_memory.cpp:9:37: error: 'construct_at' is not a member of 'std'
    9 | constexpr int f() { int x = 0; std::construct_at(&x, 42); return x; }
      |                                     ^~~~~~~~~~~~
src/cpp20__constexpr_memory.cpp:10:19: error: static assertion failed
   10 | static_assert(f() == 42);
      |               ~~~~^~~~~
constexpr_numeric __cpp_lib_constexpr_numeric unsupported
src/cpp20__constexpr_numeric.cpp:10:77: error: call to non-'constexpr' function '_Tp std::accumulate(_InputIterator, _InputIterator, _Tp) [with _InputIterator = int*; _Tp = int]'
   10 | constexpr int f() { std::array a = {1, 2, 3}; return std::accumulate(a.begin(), a.end(), 0); }
      |                                                              ~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~
In file included from /home/runner/.platformio/packages/toolchain-gccarmnoneeabi-teensy/arm-none-eabi/
constexpr_string __cpp_lib_constexpr_string 201611 macro_lies
src/cpp20__constexpr_string.cpp:9:33: error: variable 's' of non-literal type 'std::string' {aka 'std::__cxx11::basic_string'} in 'constexpr' function
    9 | constexpr int f() { std::string s = "hi"; return s.size(); }
      |                                 ^
In file included from /home/runner/.platformio/packages/toolchain-gccarmnoneeabi-teensy/arm-none-eabi/include/c++/11.3.1/string:55,
                 from src/cpp20__constexpr_string.cpp:8:
src/cpp20__constexpr_string.cpp:10:19: erro
constexpr_string_view __cpp_lib_constexpr_string_view unreported
constexpr_tuple __cpp_lib_constexpr_tuple unreported
constexpr_utility __cpp_lib_constexpr_utility unsupported
src/cpp20__constexpr_utility.cpp:9:55: error: call to non-'constexpr' function '_Tp std::exchange(_Tp&, _Up&&) [with _Tp = int; _Up = int]'
    9 | constexpr int f() { int x = 1; int old = std::exchange(x, 42); return x + old; }
      |                                          ~~~~~~~~~~~~~^~~~~~~
In file included from /home/runner/.platformio/packages/framework-arduinoteensy/cores/teensy4/wiring.h:109,
                 from /home/runner/.platformio/packages/framework-arduinoteensy/cores/teensy4
constexpr_vector __cpp_lib_constexpr_vector unsupported
src/cpp20__constexpr_vector.cpp:9:38: error: variable 'v' of non-literal type 'std::vector' in 'constexpr' function
    9 | constexpr int f() { std::vector v = {1,2,3}; return v.size(); }
      |                                      ^
In file included from /home/runner/.platformio/packages/toolchain-gccarmnoneeabi-teensy/arm-none-eabi/include/c++/11.3.1/vector:67,
                 from /home/runner/.platformio/packages/toolchain-gccarmnoneeabi-teensy/arm-none-eabi/include/c++/11.3.1/fu
constrained_equality __cpp_lib_constrained_equality unreported
coroutine __cpp_lib_coroutine unsupported
In file included from src/cpp20__coroutine.cpp:8:
/home/runner/.platformio/packages/toolchain-gccarmnoneeabi-teensy/arm-none-eabi/include/c++/11.3.1/coroutine:334:2: error: #error "the coroutine header requires -fcoroutines"
  334 | #error "the coroutine header requires -fcoroutines"
      |  ^~~~~
src/cpp20__coroutine.cpp:9:45: error: 'coroutine_handle' is not a member of 'std'
    9 | auto _test_cpp20__coroutine() -> int { std::coroutine_handle<> h; (void)h; return 0; }
      |                
destroying_delete __cpp_lib_destroying_delete unsupported
src/cpp20__destroying_delete.cpp:9:59: error: 'std::destroying_delete_t' has not been declared
    9 | struct Node { int v; static void operator delete(Node* p, std::destroying_delete_t) { p->~Node(); ::operator delete(p); } };
      |                                                           ^~~
src/cpp20__destroying_delete.cpp:9:34: error: 'operator delete' takes type 'void*' as first parameter
    9 | struct Node { int v; static void operator delete(Node* p, std::destroying_delete_t) { p->~No
endian __cpp_lib_endian unsupported
src/cpp20__endian.cpp:9:18: error: 'std::endian' has not been declared
    9 |     return (std::endian::native == std::endian::big ||
      |                  ^~~~~~
src/cpp20__endian.cpp:9:41: error: 'std::endian' has not been declared
    9 |     return (std::endian::native == std::endian::big ||
      |                                         ^~~~~~
src/cpp20__endian.cpp:10:18: error: 'std::endian' has not been declared
   10 |             std::endian::native == std::endian::little) ? 0 : 1;
erase_if __cpp_lib_erase_if unsupported
src/cpp20__erase_if.cpp:10:10: error: 'erase_if' is not a member of 'std'; did you mean 'enable_if'?
   10 |     std::erase_if(v, [](int x) { return x % 2 == 0; });
      |          ^~~~~~~~
      |          enable_if
format __cpp_lib_format unsupported
src/cpp20__format.cpp:8:10: fatal error: format: No such file or directory
    8 | #include 
      |          ^~~~~~~~
format_uchar __cpp_lib_format_uchar unsupported
src/cpp20__format_uchar.cpp:8:10: fatal error: format: No such file or directory
    8 | #include 
      |          ^~~~~~~~
freestanding_ranges __cpp_lib_freestanding_ranges unreported
generic_unordered_lookup __cpp_lib_generic_unordered_lookup unsupported
src/cpp20__generic_unordered_lookup.cpp:12:133: error: no matching function for call to 'std::unordered_map, int, Hash, Eq>::find(std::string_view)'
   12 | auto _test_cpp20__generic_unordered_lookup() -> int { std::unordered_map m; m["key"] = 42; return m.find(std::string_view("key"))->second - 42; }
      |                                                                                                                               ~~
int_pow2 __cpp_lib_int_pow2 unsupported
src/cpp20__int_pow2.cpp:9:51: error: 'has_single_bit' is not a member of 'std'
    9 | auto _test_cpp20__int_pow2() -> int { return std::has_single_bit(8u) && std::bit_ceil(5u) == 8 ? 0 : 1; }
      |                                                   ^~~~~~~~~~~~~~
src/cpp20__int_pow2.cpp:9:78: error: 'bit_ceil' is not a member of 'std'
    9 | auto _test_cpp20__int_pow2() -> int { return std::has_single_bit(8u) && std::bit_ceil(5u) == 8 ? 0 : 1; }
      |                                        
integer_comparison_functions __cpp_lib_integer_comparison_functions unsupported
src/cpp20__integer_comparison_functions.cpp:9:71: error: 'cmp_less' is not a member of 'std'
    9 | auto _test_cpp20__integer_comparison_functions() -> int { return std::cmp_less(-1, 1u) ? 0 : 1; }
      |                                                                       ^~~~~~~~
interpolate __cpp_lib_interpolate unsupported
src/cpp20__interpolate.cpp:9:56: error: 'midpoint' is not a member of 'std'
    9 | auto _test_cpp20__interpolate() -> int { auto m = std::midpoint(1, 3); auto l = std::lerp(0.0, 1.0, 0.5); return (m == 2 && l == 0.5) ? 0 : 1; }
      |                                                        ^~~~~~~~
src/cpp20__interpolate.cpp:9:86: error: 'lerp' is not a member of 'std'
    9 | auto _test_cpp20__interpolate() -> int { auto m = std::midpoint(1, 3); auto l = std::lerp(0.0, 1.0, 0.5); return (m == 
is_constant_evaluated __cpp_lib_is_constant_evaluated unsupported
src/cpp20__is_constant_evaluated.cpp:9:30: error: 'is_constant_evaluated' is not a member of 'std'
    9 | constexpr int f() { if (std::is_constant_evaluated()) return 1; return 0; }
      |                              ^~~~~~~~~~~~~~~~~~~~~
src/cpp20__is_constant_evaluated.cpp:10:71: error: 'constexpr int f()' called in a constant expression
   10 | auto _test_cpp20__is_constant_evaluated() -> int { constexpr int v = f(); return v == 1 ? 0 : 1; }
      |                                         
is_nothrow_convertible __cpp_lib_is_nothrow_convertible unsupported
src/cpp20__is_nothrow_convertible.cpp:9:65: error: 'is_nothrow_convertible_v' is not a member of 'std'; did you mean 'is_nothrow_constructible_v'?
    9 | auto _test_cpp20__is_nothrow_convertible() -> int { return std::is_nothrow_convertible_v ? 0 : 1; }
      |                                                                 ^~~~~~~~~~~~~~~~~~~~~~~~
      |                                                                 is_nothrow_constructible_v
src/cpp20__is_nothrow_convertible.cp
jthread __cpp_lib_jthread unsupported
src/cpp20__jthread.cpp:9:43: error: 'stop_source' is not a member of 'std'
    9 | auto _test_cpp20__jthread() -> int { std::stop_source src; std::stop_token tok = src.get_token(); return tok.stop_requested() ? 1 : 0; }
      |                                           ^~~~~~~~~~~
src/cpp20__jthread.cpp:9:65: error: 'stop_token' is not a member of 'std'
    9 | auto _test_cpp20__jthread() -> int { std::stop_source src; std::stop_token tok = src.get_token(); return tok.stop_requested() ? 1 : 0; }
latch __cpp_lib_latch unsupported
src/cpp20__latch.cpp:9:41: error: 'latch' is not a member of 'std'
    9 | auto _test_cpp20__latch() -> int { std::latch l(1); l.count_down(); return l.try_wait() ? 0 : 1; }
      |                                         ^~~~~
src/cpp20__latch.cpp:9:53: error: 'l' was not declared in this scope
    9 | auto _test_cpp20__latch() -> int { std::latch l(1); l.count_down(); return l.try_wait() ? 0 : 1; }
      |                                                     ^
list_remove_return_type __cpp_lib_list_remove_return_type unsupported
src/cpp20__list_remove_return_type.cpp:9:92: error: 'void n' has incomplete type
    9 | auto _test_cpp20__list_remove_return_type() -> int { std::list l = {1, 2, 2, 3}; auto n = l.remove(2); return n == 2 ? 0 : 1; }
      |                                                                                            ^
math_constants __cpp_lib_math_constants unsupported
src/cpp20__math_constants.cpp:9:22: error: 'std::numbers' has not been declared
    9 |     double pi = std::numbers::pi;
      |                      ^~~~~~~
modules_lib __cpp_lib_modules unreported
move_iterator_concept __cpp_lib_move_iterator_concept unreported
polymorphic_allocator __cpp_lib_polymorphic_allocator unreported
ranges __cpp_lib_ranges unsupported
src/cpp20__ranges.cpp:14:30: error: 'std::views' has not been declared
   14 |     for (auto x : arr | std::views::take(3)) total += x;
      |                              ^~~~~
remove_cvref __cpp_lib_remove_cvref unsupported
src/cpp20__remove_cvref.cpp:9:70: error: 'remove_cvref_t' is not a member of 'std'
    9 | auto _test_cpp20__remove_cvref() -> int { return std::is_same_v, int> ? 0 : 1; }
      |                                                                      ^~~~~~~~~~~~~~
src/cpp20__remove_cvref.cpp:9:55: error: parse error in template argument list
    9 | auto _test_cpp20__remove_cvref() -> int { return std::is_same_v, int> ? 0 : 1; }
    
semaphore __cpp_lib_semaphore unsupported
src/cpp20__semaphore.cpp:9:45: error: 'binary_semaphore' is not a member of 'std'; did you mean 'binary_search'?
    9 | auto _test_cpp20__semaphore() -> int { std::binary_semaphore s(1); s.acquire(); s.release(); return 0; }
      |                                             ^~~~~~~~~~~~~~~~
      |                                             binary_search
src/cpp20__semaphore.cpp:9:68: error: 's' was not declared in this scope; did you mean 'sq'?
    9 | auto _test_cpp20__semaphore() -> int {
shift __cpp_lib_shift unsupported
src/cpp20__shift.cpp:10:70: error: 'shift_left' is not a member of 'std'
   10 | auto _test_cpp20__shift() -> int { std::vector v = {1,2,3,4,5}; std::shift_left(v.begin(), v.end(), 2); return v[0] == 3 ? 0 : 1; }
      |                                                                      ^~~~~~~~~~
smart_ptr_for_overwrite __cpp_lib_smart_ptr_for_overwrite unsupported
src/cpp20__smart_ptr_for_overwrite.cpp:9:68: error: 'make_unique_for_overwrite' is not a member of 'std'
    9 | auto _test_cpp20__smart_ptr_for_overwrite() -> int { auto p = std::make_unique_for_overwrite(); *p = 42; return *p - 42; }
      |                                                                    ^~~~~~~~~~~~~~~~~~~~~~~~~
src/cpp20__smart_ptr_for_overwrite.cpp:9:94: error: expected primary-expression before 'int'
    9 | auto _test_cpp20__smart_ptr_for_overwrite() -> int { auto
source_location __cpp_lib_source_location unsupported
src/cpp20__source_location.cpp:9:21: error: 'std::source_location' has not been declared
    9 |     auto loc = std::source_location::current();
      |                     ^~~~~~~~~~~~~~~
span __cpp_lib_span unsupported
src/cpp20__span.cpp:10:15: error: 'span' is not a member of 'std'
   10 | auto sum(std::span values) -> int {
      |               ^~~~
src/cpp20__span.cpp:10:20: error: expected primary-expression before 'const'
   10 | auto sum(std::span values) -> int {
      |                    ^~~~~
src/cpp20__span.cpp:10:39: error: expected ',' or ';' before '->' token
   10 | auto sum(std::span values) -> int {
      |                                       ^~
ssize __cpp_lib_ssize unsupported
src/cpp20__ssize.cpp:9:67: error: 'ssize' is not a member of 'std'; did you mean 'size'?
    9 | auto _test_cpp20__ssize() -> int { int a[] = {1,2,3}; return std::ssize(a) == 3 ? 0 : 1; }
      |                                                                   ^~~~~
      |                                                                   size
starts_ends_with __cpp_lib_starts_ends_with unsupported
src/cpp20__starts_ends_with.cpp:10:14: error: 'std::string' {aka 'class std::__cxx11::basic_string'} has no member named 'starts_with'
   10 |     return s.starts_with("hello") && s.ends_with("world") ? 0 : 1;
      |              ^~~~~~~~~~~
src/cpp20__starts_ends_with.cpp:10:40: error: 'std::string' {aka 'class std::__cxx11::basic_string'} has no member named 'ends_with'
   10 |     return s.starts_with("hello") && s.ends_with("world") ? 0 : 1;
      |                              
syncbuf __cpp_lib_syncbuf unsupported
src/cpp20__syncbuf.cpp:10:67: error: 'osyncstream' is not a member of 'std'; did you mean 'ostringstream'?
   10 | auto _test_cpp20__syncbuf() -> int { std::ostringstream oss; std::osyncstream sync(oss); sync << "hi"; sync.emit(); return oss.str() == "hi" ? 0 : 1; }
      |                                                                   ^~~~~~~~~~~
      |                                                                   ostringstream
src/cpp20__syncbuf.cpp:10:90: error: 'sync' was not declare
three_way_comparison_lib __cpp_lib_three_way_comparison unsupported
src/cpp20__three_way_comparison_lib.cpp:9:69: error: expected primary-expression before '>' token
    9 | auto _test_cpp20__three_way_comparison_lib() -> int { auto r = (1 <=> 2); return (r < 0) ? 0 : 1; }
      |                                                                     ^
to_address __cpp_lib_to_address unsupported
src/cpp20__to_address.cpp:9:79: error: 'to_address' is not a member of 'std'
    9 | auto _test_cpp20__to_address() -> int { int x = 42; int* p = &x; return *std::to_address(p) - 42; }
      |                                                                               ^~~~~~~~~~
to_array __cpp_lib_to_array unsupported
src/cpp20__to_array.cpp:11:21: error: 'to_array' is not a member of 'std'
   11 |     auto arr = std::to_array({1, 2, 3, 4, 5});
      |                     ^~~~~~~~
type_identity __cpp_lib_type_identity unsupported
src/cpp20__type_identity.cpp:9:32: error: 'std::type_identity_t' has not been declared
    9 | template void f(T, std::type_identity_t) {}
      |                                ^~~
src/cpp20__type_identity.cpp:9:52: error: expected ',' or '...' before '<' token
    9 | template void f(T, std::type_identity_t) {}
      |                                                    ^
unwrap_ref __cpp_lib_unwrap_ref unsupported
src/cpp20__unwrap_ref.cpp:9:92: error: 'unwrap_ref_decay_t' in namespace 'std' does not name a template type
    9 | auto _test_cpp20__unwrap_ref() -> int { int x = 42; auto ref = std::ref(x); using T = std::unwrap_ref_decay_t; return std::is_same_v ? 0 : 1; }
      |                                                                                            ^~~~~~~~~~~~~~~~~~
    9 | auto _test_cpp20__unwrap_ref() -> int { int x = 42; auto ref = std::ref(x); using T = std