Difference between revisions of "cpp/experimental/lib extensions"
From cppreference.com
< cpp | experimental
(→Modified versions of existing classes to support type-erased allocators: adjust) |
(→Convenience aliases for containers using polymorphic allocators: collapse) |
||
Line 52: | Line 52: | ||
==== Convenience aliases for containers using polymorphic allocators ==== | ==== Convenience aliases for containers using polymorphic allocators ==== | ||
[[cpp/experimental/lib extensions/pmr_container|Convenience aliases and alias templates]] for containers using polymorphic allocators are provided in the {{tt|std::experimental::pmr}} namespace for the following class templates in the standard library: | [[cpp/experimental/lib extensions/pmr_container|Convenience aliases and alias templates]] for containers using polymorphic allocators are provided in the {{tt|std::experimental::pmr}} namespace for the following class templates in the standard library: | ||
− | + | {{collapse top | List of container templates for which convenience aliases are provided}} | |
+ | {{div col|3}} | ||
* {{lc|std::vector}} | * {{lc|std::vector}} | ||
* {{lc|std::deque}} | * {{lc|std::deque}} | ||
Line 67: | Line 68: | ||
* {{lc|std::unordered_set}} | * {{lc|std::unordered_set}} | ||
* {{lc|std::unordered_multiset}} | * {{lc|std::unordered_multiset}} | ||
− | + | {{div col end}} | |
+ | {{collapse bottom}} | ||
=== Array support for {{tt|shared_ptr}} === | === Array support for {{tt|shared_ptr}} === |
Revision as of 19:16, 7 August 2015
The C++ Extensions for Library Fundamentals, ISO/IEC TS 19568:xxxx, defines the following new components for the C++ standard library:
Contents |
optional objects
Defined in header
<experimental/optional> | |
a class template representing optional objects (class template) |
class any
Defined in header
<experimental/any> | |
a type-safe container for single values of any type (class) |
string_view
Defined in header
<experimental/string_view> | |
a non-owning reference to a string (class template) |
Type-erased and polymorphic allocators
Polymorphic allocators and memory resources
The entities in this section are declared in the std::experimental::pmr namespace.
Defined in header
<experimental/memory_resource> | |
an abstract interface for classes that encapsulate memory resources (class) | |
a thread-safe memory_resource for managing allocations in pools of different block sizes (class) | |
a thread-unsafe memory_resource for managing allocations in pools of different block sizes (class) | |
a special-purpose memory_resource that releases the allocated memory only when the resource is destroyed (class) | |
an allocator that supports run-time polymorphism based on the memory_resource it is constructed with (class template) | |
adapts an allocator into a memory_resource (alias template) | |
returns a static program-wide memory_resource that uses the global operator new and operator delete to allocate and deallocate memory (function) | |
returns a static memory_resource that performs no allocation (function) | |
gets the default memory_resource (function) | |
sets the default memory_resource (function) |
Modified versions of existing classes to support type-erased allocators
Defined in header
<experimental/functional> | |
a modified version of std::function with support for type-erased allocators (class template) | |
Defined in header
<experimental/future> | |
a modified version of std::promise with support for type-erased allocators (class template) | |
a modified version of std::packaged_task with support for type-erased allocators (class template) |
Convenience aliases for containers using polymorphic allocators
Convenience aliases and alias templates for containers using polymorphic allocators are provided in the std::experimental::pmr
namespace for the following class templates in the standard library:
List of container templates for which convenience aliases are provided |
---|
Defined in header
<experimental/memory> | |
Class | Description |
A modified version of std::shared_ptr that supports arrays (class template) | |
A modified version of std::weak_ptr that supports arrays (class template) |
Sampling and searching algorithms
Defined in header
<experimental/algorithm> | |
selects n random elements from a sequence (function template) | |
applies a Searcher to a sequence (function template) | |
Defined in header
<experimental/functional> | |
standard C++ library search algorithm implementation (class template) | |
helper function to create a default_searcher (function template) | |
Boyer-Moore search algorithm implementation (class template) | |
helper function to create a boyer_moore_searcher (function template) | |
Boyer-Moore-Horspool search algorithm implementation (class template) | |
helper function to create a boyer_moore_horspool_searcher (function template) |
General utilities
Defined in header
<experimental/utility> | |
placeholder type for type erasure, such as in allocators (class) | |
Defined in header
<experimental/tuple> | |
calls a function to a tuple of arguments (function template) | |
Defined in header
<experimental/type_traits> | |
deduce the implied function type of the callable object when called with the given argument types (class template) |
In addition, the TS provides numerous constexpr
variable templates for the following type traits and other class templates in the standard library:
- std::is_void
- std::is_null_pointer
- std::is_integral
- std::is_floating_point
- std::is_array
- std::is_pointer
- std::is_lvalue_reference
- std::is_rvalue_reference
- std::is_member_object_pointer
- std::is_member_function_pointer
- std::is_enum
- std::is_union
- std::is_class
- std::is_function
- std::is_reference
- std::is_arithmetic
- std::is_fundamental
- std::is_object
- std::is_scalar
- std::is_compound
- std::is_member_pointer
- std::is_const
- std::is_volatile
- std::is_trivial
- std::is_trivially_copyable
- std::is_standard_layout
- std::is_pod
- std::is_literal_type
- std::is_empty
- std::is_polymorphic
- std::is_abstract
- std::is_final
- std::is_signed
- std::is_unsigned
- std::is_constructible
- std::is_trivially_constructible
- std::is_nothrow_constructible
- std::is_default_constructible
- std::is_trivially_default_constructible
- std::is_nothrow_default_constructible
- std::is_copy_constructible
- std::is_trivially_copy_constructible
- std::is_nothrow_copy_constructible
- std::is_move_constructible
- std::is_trivially_move_constructible
- std::is_nothrow_move_constructible
- std::is_assignable
- std::is_trivially_assignable
- std::is_nothrow_assignable
- std::is_copy_assignable
- std::is_trivially_copy_assignable
- std::is_nothrow_copy_assignable
- std::is_move_assignable
- std::is_trivially_move_assignable
- std::is_nothrow_move_assignable
- std::is_destructible
- std::is_trivially_destructible
- std::is_nothrow_destructible
- std::has_virtual_destructor
- std::alignment_of
- std::rank
- std::extent
- std::is_same
- std::is_base_of
- std::is_convertible
- std::ratio_equal
- std::ratio_not_equal
- std::ratio_less
- std::ratio_less_equal
- std::ratio_greater
- std::ratio_greater_equal
- std::tuple_size
- std::chrono::treat_as_floating_point
- std::is_error_code_enum
- std::is_error_condition_enum
- std::is_bind_expression
- std::is_placeholder
- std::uses_allocator
Feature test macros
Defined in header
<experimental/optional> | |
__cpp_lib_experimental_optional |
a value of at least 201411 indicates that the optional type is supported (macro constant) |
Defined in header
<experimental/any> | |
__cpp_lib_experimental_any |
a value of at least 201411 indicates that the any type is supported (macro constant) |
Defined in header
<experimental/string_view> | |
__cpp_lib_experimental_string_view |
a value of at least 201411 indicates that basic_string_view template is supported (macro constant) |
Defined in header
<experimental/tuple> | |
__cpp_lib_experimental_apply |
a value of at least 201402 indicates that the tuple apply() function is supported (macro constant) |
Defined in header
<experimental/type_traits> | |
__cpp_lib_experimental_type_trait_variable_templates |
a value of at least 201402 indicates that variable template type traits are supported (macro constant) |
Defined in header
<experimental/type_traits> | |
__cpp_lib_experimental_invocation_type |
a value of at least 201406 indicates that invocation type traits are supported (macro constant) |
Defined in header
<experimental/functional> | |
__cpp_lib_experimental_boyer_moore_searching |
a value of at least 201411 indicates that additional searching algorithms are supported (macro constant) |
Defined in header
<experimental/functional> | |
__cpp_lib_experimental_function_erased_allocator |
a value of at least 201406 indicates that type-erased allocator for std::function is supported (macro constant) |
Defined in header
<experimental/future> | |
__cpp_lib_experimental_promise_erased_allocator |
a value of at least 201406 indicates that type-erased allocator for std::promise is supported (macro constant) |
Defined in header
<experimental/future> | |
__cpp_lib_experimental_packaged_task_erased_allocator |
a value of at least 201406 indicates that type-erased allocator for std::packaged_task is supported (macro constant) |
Defined in header
<experimental/memory> | |
__cpp_lib_experimental_shared_ptr_arrays |
a value of at least 201406 indicates that shared_ptr arrays are supported (macro constant) |
Defined in header
<experimental/memory_resource> | |
__cpp_lib_experimental_memory_resources |
a value of at least 201402 indicates that polymorphic memory resources are supported (macro constant) |
Defined in header
<experimental/algorithm> | |
__cpp_lib_experimental_sample |
a value of 201402 indicates that the sample algorithm is supported (macro constant) |