# C++ Language Library (`lang`) ## Table of Contents * [Home](./CONTENTS.md#planning-documentation-for-fennec) * [C++ Language Library](#c-language-library-lang) * [Table of Contents](#table-of-contents) * [Introduction](#introduction) * [Implementation](#implementation) * [Diagnostics](#diagnostics) * [Utility](#utility) * [Primary Types](#primary-types) * [Composite Types](#composite-types) * [Type Properties](#type-properties) * [Supported Operations](#supported-operations) * [Property Queries](#property-queries) * [Type Relationships](#type-relationships) * [Type Transformations](#type-transformations) * [Other Transformations](#other-transformations) * [Logical Operations](#logical-operations) * [Sequences](#sequences) ## Introduction   This library contains headers and classes related to the C++ language. The contents of this library include the Language Support, Diagnostics, and Metaprogramming libraries of the C++ Standard Library and Template Library. See: - [Language Support Library](https://cppreference.com/w/cpp/utility.html#Language_support) - Basic Memory Management is handled in the [Memory Library](./MEMORY_LIBRARY.md#) - [Diagnostics Library](https://cppreference.com/w/cpp/error.html) - [Metaprogramming Library](https://cppreference.com/w/cpp/meta.html) ## Implementation ### Diagnostics | Symbol | Implemented | Passed | |:--------|:-----------:|:------:| | assert | ✅ | ✅ | | assertf | ✅ | ✅ | | assertd | ✅ | ✅ | ### Utility | Symbol | Implemented | Passed | |:-----------------|:-----------:|:------:| | numeric_limits | ✅ | ✅ | | initializer_list | ⛔ | ⛔ | ### Primary Types | Symbol | Implemented | Passed | |:---------------------------|:-----------:|:------:| | is_void | ✅ | ✅ | | is_null_pointer | ✅ | ✅ | | is_integral | ✅ | ✅ | | is_floating_point | ✅ | ✅ | | is_array | ✅ | 🚧 | | is_enum | ⛔ | ⛔ | | is_union | ⛔ | ⛔ | | is_class | ✅ | ✅ | | is_function | ⛔ | ⛔ | | is_pointer | ✅ | ✅ | | is_lvalue_reference | ✅ | ✅ | | is_rvalue_reference | ✅ | ✅ | | is_member_object_pointer | ⛔ | ⛔ | | is_member_function_pointer | ⛔ | ⛔ | ### Composite Types | Symbol | Implemented | Passed | |:------------------|:-----------:|:------:| | is_fundamental | ✅ | ✅ | | is_arithmetic | ✅ | ✅ | | is_scalar | ⛔ | ⛔ | | is_object | ⛔ | ⛔ | | is_compound | ⛔ | ⛔ | | is_reference | ⛔ | ⛔ | | is_member_pointer | ⛔ | ⛔ | ### Type Properties | Symbol | Implemented | Passed | |:----------------------------------|:-----------:|:------:| | is_const | ✅ | ✅ | | is_volatile | ✅ | ✅ | | is_trivially_copyable | ✅ | ✅ | | is_standard_layout | ⛔ | ⛔ | | has_unique_object_representations | ⛔ | ⛔ | | is_empty | ⛔ | ⛔ | | is_polymorphic | ⛔ | ⛔ | | is_abstract | ⛔ | ⛔ | | is_final | ⛔ | ⛔ | | is_aggregate | ⛔ | ⛔ | | is_implicit_lifetime | ⛔ | ⛔ | | is_signed | ✅ | ✅ | | is_unsigned | ✅ | ✅ | | is_bounded_array | ⛔ | ⛔ | | is_unbounded_array | ⛔ | ⛔ | | is_scoped_enum | ⛔ | ⛔ | ### Supported Operations | Symbol | Implemented | Passed | |:------------------------------------|:-----------:|:------:| | is_constructible | ✅ | ✅ | | is_trivially_constructible | ✅ | ✅ | | is_nothrow_constructible | ⛔ | ⛔ | | is_default_constructible | ✅ | ✅ | | is_trivially_default_constructible | ⛔ | ⛔ | | is_nothrow_default_constructible | ⛔ | ⛔ | | is_copy_constructible | ✅ | ✅ | | is_trivially_copy_constructible | ⛔ | ⛔ | | is_nothrow_copy_constructible | ⛔ | ⛔ | | is_move_constructible | ✅ | ✅ | | is_trivially_move_constructible | ⛔ | ⛔ | | is_nothrow_move_constructible | ⛔ | ⛔ | | is_destructible | ⛔ | ⛔ | | is_trivially_destructible | ⛔ | ❌ | | is_nothrow_destructible | ❌ | ❌ | | has_virtual_destructor | ❌ | ❌ | | is_swappable | ❌ | ❌ | | is_swappable_with | ❌ | ❌ | | is_nothrow_swappable | ❌ | ❌ | | is_nothrow_swappable_with | ❌ | ❌ | | reference_constructs_from_temporary | ❌ | ❌ | | reference_converts_from_temporary | ❌ | ❌ | ### Property Queries | Symbol | Implemented | Passed | |:-------------|:-----------:|:------:| | alignment_of | ❌ | ❌ | | rank | ❌ | ❌ | | extent | ❌ | ❌ | ### Type Relationships | Symbol | Implemented | Passed | |:------------------------------------|:-----------:|:------:| | is_same | ✅ | ✅ | | is_base_of | ❌ | ❌ | | is_virtual_base_of | ❌ | ❌ | | is_convertible | ✅ | ✅ | | is_nothrow_convertible | ❌ | ❌ | | is_layout_compatible | ❌ | ❌ | | is_pointer_interconvertible_base_of | ❌ | ❌ | | is_invocable | ❌ | ❌ | | is_invocable_r | ❌ | ❌ | | is_nothrow_invocable | ❌ | ❌ | | is_nothrow_invocable_r | ❌ | ❌ | ### Type Transformations | Symbol | Implemented | Passed | |:---------------------|:-----------:|:------:| | add_const | ✅ | ✅ | | add_volatile | ✅ | ✅ | | add_cv | ✅ | ✅ | | remove_const | ✅ | ✅ | | remove_volatile | ✅ | ✅ | | remove_cv | ✅ | ✅ | | add_lvalue_reference | ✅ | ✅ | | add_rvalue_reference | ✅ | ✅ | | remove_reference | ✅ | ✅ | | add_pointer | ✅ | ✅ | | remove_pointer | ✅ | ✅ | | make_signed | ✅ | ✅ | | make_unsigned | ✅ | ✅ | | remove_extent | ❌ | ❌ | | remove_all_extents | ❌ | ❌ | ### Other Transformations | Symbol | Implemented | Passed | |:-----------------------|:-----------:|:------:| | aligned_storage | ❌ | ❌ | | aligned_union | ❌ | ❌ | | aligned_union | ❌ | ❌ | | decay | 🚧 | 🚧 | | remove_cvref | ✅ | ✅ | | enable_if | ✅ | ✅ | | conditional | ✅ | ✅ | | common_type | ❌ | ❌ | | common_reference | ❌ | ❌ | | basic_common_reference | ❌ | ❌ | | underlying_type | ❌ | ❌ | | result_of | ❌ | ❌ | | invoke_result | ❌ | ❌ | | void_t | ✅ | ✅ | ### Logical Operations | Symbol | Implemented | Passed | |:------------|:-----------:|:------:| | conjunction | ❌ | ❌ | | disjunction | ❌ | ❌ | | negation | ❌ | ❌ | ### Sequences | Symbol | Implemented | Passed | |:-------------------------------------------------|:-----------:|:------:| | const_sequence | ✅ | ✅ | | const_integer_sequence (`std::integer_sequence`) | ✅ | ✅ | | make_integer_sequence | ✅ | ✅ | | const_index_sequence (`std::index_sequence`) | ✅ | ✅ | | make_index_sequence | ✅ | ✅ | | concat_sequence | ✅ | ✅ |