| Feature | Status | Coverage |
|---|---|---|
| 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 |
| Feature | Macro | Value | Compiles | Status |
|---|---|---|---|---|
| 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++2a' or '-std=gnu++2a'
9 | template |
||||
| 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 |
||||
| 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 |
||||
| shared_ptr_arrays | __cpp_lib_shared_ptr_arrays |
201611 | ✅ | 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 |
201606 | ✅ | supported |
| void_t | __cpp_lib_void_t |
201411 | ✅ | supported |