207 lines
9.6 KiB
Markdown
207 lines
9.6 KiB
Markdown
|
|
<!-- I release these notes into the public domain -->
|
|
|
|
# C++ Language Library (`lang`)
|
|
|
|
## Table of Contents
|
|
|
|
<!-- TOC -->
|
|
* [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)
|
|
<!-- TOC -->
|
|
|
|
|
|
## 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 | ✅ | ✅ |
|