Namespaces
Variants
Views
Actions

Difference between revisions of "cpp/experimental/lib extensions"

From cppreference.com
(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:
<div style="column-count:3;-moz-column-count:3;-webkit-column-count:3">
+
{{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>
+
{{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

 
 
Experimental
Technical Specification
Filesystem library (filesystem TS)
Library fundamentals (library fundamentals TS)
Library fundamentals 2 (library fundamentals TS v2)
Library fundamentals 3 (library fundamentals TS v3)
Extensions for parallelism (parallelism TS)
Extensions for parallelism 2 (parallelism TS v2)
Extensions for concurrency (concurrency TS)
Extensions for concurrency 2 (concurrency TS v2)
Concepts (concepts TS)
Ranges (ranges TS)
Reflection (reflection TS)
Mathematical special functions (special functions TR)
Experimental Non-TS
Pattern Matching
Linear Algebra
std::execution
Contracts
2D Graphics
 
 

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.

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) [edit]
returns a static memory_resource that performs no allocation
(function) [edit]
gets the default memory_resource
(function) [edit]
sets the default memory_resource
(function) [edit]

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

Array support for shared_ptr

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:

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)
__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)