Toggle navigation sidebar
Toggle in-page Table of Contents
Welcome to the HPX documentation!
User documentation
Quick start
Examples
Asynchronous execution
Parallel algorithms
Asynchronous execution with actions
Remote execution with actions
Components and actions
Dataflow
Local to remote
Serializing user-defined types
Manual
Prerequisites
Getting
HPX
Building
HPX
CMake variables used to configure
HPX
Creating
HPX
projects
Starting the
HPX
runtime
Launching and configuring
HPX
applications
Writing single-node
HPX
applications
Writing distributed
HPX
applications
Running on batch systems
Debugging
HPX
applications
Optimizing
HPX
applications
HPX
runtime and resources
Miscellaneous
Troubleshooting
Terminology
Why
HPX
?
Additional material
Modules
Overview
Core modules
affinity
algorithms
allocator_support
asio
assertion
async_base
async_combinators
async_cuda
async_local
async_mpi
batch_environments
cache
command_line_handling_local
compute_local
concepts
concurrency
config
config_registry
coroutines
datastructures
debugging
errors
execution
execution_base
executors
filesystem
format
functional
futures
hardware
hashing
include_local
ini
init_runtime_local
io_service
iterator_support
itt_notify
lci_base
lcos_local
lock_registration
logging
memory
mpi_base
pack_traversal
plugin
prefix
preprocessor
program_options
properties
resiliency
resource_partitioner
runtime_configuration
runtime_local
schedulers
serialization
static_reinit
string_util
synchronization
tag_invoke
testing
thread_pool_util
thread_pools
thread_support
threading
threading_base
thread_manager
timed_execution
timing
topology
type_support
util
version
Main
HPX
modules
actions
actions_base
agas
agas_base
async_colocated
async
checkpoint
checkpoint_base
collectives
command_line_handling
components
components_base
compute
distribution_policies
executors_distributed
include
init_runtime
lcos_distributed
naming
naming_base
parcelport_lci
parcelport_libfabric
parcelport_mpi
parcelport_tcp
parcelset
parcelset_base
performance_counters
plugin_factories
resiliency_distributed
runtime_components
runtime_distributed
segmented_algorithms
statistics
Reference
API reference
Public API
Full API
algorithms
hpx/parallel/task_block.hpp
hpx/parallel/task_group.hpp
hpx/parallel/algorithms/adjacent_difference.hpp
hpx/parallel/algorithms/adjacent_find.hpp
hpx/parallel/algorithms/all_any_none.hpp
hpx/parallel/algorithms/copy.hpp
hpx/parallel/algorithms/count.hpp
hpx/parallel/algorithms/destroy.hpp
hpx/parallel/algorithms/ends_with.hpp
hpx/parallel/algorithms/equal.hpp
hpx/parallel/algorithms/exclusive_scan.hpp
hpx/parallel/algorithms/fill.hpp
hpx/parallel/algorithms/find.hpp
hpx/parallel/algorithms/for_each.hpp
hpx/parallel/algorithms/for_loop.hpp
hpx/parallel/algorithms/for_loop_induction.hpp
hpx/parallel/algorithms/for_loop_reduction.hpp
hpx/parallel/algorithms/generate.hpp
hpx/parallel/algorithms/includes.hpp
hpx/parallel/algorithms/inclusive_scan.hpp
hpx/parallel/algorithms/is_heap.hpp
hpx/parallel/algorithms/is_partitioned.hpp
hpx/parallel/algorithms/is_sorted.hpp
hpx/parallel/algorithms/lexicographical_compare.hpp
hpx/parallel/algorithms/make_heap.hpp
hpx/parallel/algorithms/merge.hpp
hpx/parallel/algorithms/minmax.hpp
hpx/parallel/algorithms/mismatch.hpp
hpx/parallel/algorithms/move.hpp
hpx/parallel/algorithms/nth_element.hpp
hpx/parallel/algorithms/partial_sort.hpp
hpx/parallel/algorithms/partial_sort_copy.hpp
hpx/parallel/algorithms/partition.hpp
hpx/parallel/algorithms/reduce.hpp
hpx/parallel/algorithms/reduce_by_key.hpp
hpx/parallel/algorithms/remove.hpp
hpx/parallel/algorithms/remove_copy.hpp
hpx/parallel/algorithms/replace.hpp
hpx/parallel/algorithms/reverse.hpp
hpx/parallel/algorithms/rotate.hpp
hpx/parallel/algorithms/search.hpp
hpx/parallel/algorithms/set_difference.hpp
hpx/parallel/algorithms/set_intersection.hpp
hpx/parallel/algorithms/set_symmetric_difference.hpp
hpx/parallel/algorithms/set_union.hpp
hpx/parallel/algorithms/shift_left.hpp
hpx/parallel/algorithms/shift_right.hpp
hpx/parallel/algorithms/sort.hpp
hpx/parallel/algorithms/sort_by_key.hpp
hpx/parallel/algorithms/stable_sort.hpp
hpx/parallel/algorithms/starts_with.hpp
hpx/parallel/algorithms/swap_ranges.hpp
hpx/parallel/algorithms/transform.hpp
hpx/parallel/algorithms/transform_exclusive_scan.hpp
hpx/parallel/algorithms/transform_inclusive_scan.hpp
hpx/parallel/algorithms/transform_reduce.hpp
hpx/parallel/algorithms/transform_reduce_binary.hpp
hpx/parallel/algorithms/uninitialized_copy.hpp
hpx/parallel/algorithms/uninitialized_default_construct.hpp
hpx/parallel/algorithms/uninitialized_fill.hpp
hpx/parallel/algorithms/uninitialized_move.hpp
hpx/parallel/algorithms/uninitialized_value_construct.hpp
hpx/parallel/algorithms/unique.hpp
hpx/parallel/container_algorithms/adjacent_difference.hpp
hpx/parallel/container_algorithms/adjacent_find.hpp
hpx/parallel/container_algorithms/all_any_none.hpp
hpx/parallel/container_algorithms/copy.hpp
hpx/parallel/container_algorithms/count.hpp
hpx/parallel/container_algorithms/destroy.hpp
hpx/parallel/container_algorithms/ends_with.hpp
hpx/parallel/container_algorithms/equal.hpp
hpx/parallel/container_algorithms/exclusive_scan.hpp
hpx/parallel/container_algorithms/fill.hpp
hpx/parallel/container_algorithms/find.hpp
hpx/parallel/container_algorithms/for_each.hpp
hpx/parallel/container_algorithms/for_loop.hpp
hpx/parallel/container_algorithms/generate.hpp
hpx/parallel/container_algorithms/includes.hpp
hpx/parallel/container_algorithms/inclusive_scan.hpp
hpx/parallel/container_algorithms/is_heap.hpp
hpx/parallel/container_algorithms/is_partitioned.hpp
hpx/parallel/container_algorithms/is_sorted.hpp
hpx/parallel/container_algorithms/lexicographical_compare.hpp
hpx/parallel/container_algorithms/make_heap.hpp
hpx/parallel/container_algorithms/merge.hpp
hpx/parallel/container_algorithms/minmax.hpp
hpx/parallel/container_algorithms/mismatch.hpp
hpx/parallel/container_algorithms/move.hpp
hpx/parallel/container_algorithms/nth_element.hpp
hpx/parallel/container_algorithms/partial_sort.hpp
hpx/parallel/container_algorithms/partial_sort_copy.hpp
hpx/parallel/container_algorithms/partition.hpp
hpx/parallel/container_algorithms/reduce.hpp
hpx/parallel/container_algorithms/remove.hpp
hpx/parallel/container_algorithms/remove_copy.hpp
hpx/parallel/container_algorithms/replace.hpp
hpx/parallel/container_algorithms/reverse.hpp
hpx/parallel/container_algorithms/rotate.hpp
hpx/parallel/container_algorithms/search.hpp
hpx/parallel/container_algorithms/set_difference.hpp
hpx/parallel/container_algorithms/set_intersection.hpp
hpx/parallel/container_algorithms/set_symmetric_difference.hpp
hpx/parallel/container_algorithms/set_union.hpp
hpx/parallel/container_algorithms/shift_left.hpp
hpx/parallel/container_algorithms/shift_right.hpp
hpx/parallel/container_algorithms/sort.hpp
hpx/parallel/container_algorithms/stable_sort.hpp
hpx/parallel/container_algorithms/starts_with.hpp
hpx/parallel/container_algorithms/swap_ranges.hpp
hpx/parallel/container_algorithms/transform.hpp
hpx/parallel/container_algorithms/transform_exclusive_scan.hpp
hpx/parallel/container_algorithms/transform_inclusive_scan.hpp
hpx/parallel/container_algorithms/transform_reduce.hpp
hpx/parallel/container_algorithms/uninitialized_copy.hpp
hpx/parallel/container_algorithms/uninitialized_default_construct.hpp
hpx/parallel/container_algorithms/uninitialized_fill.hpp
hpx/parallel/container_algorithms/uninitialized_move.hpp
hpx/parallel/container_algorithms/uninitialized_value_construct.hpp
hpx/parallel/container_algorithms/unique.hpp
hpx/parallel/util/low_level.hpp
hpx/parallel/util/merge_four.hpp
hpx/parallel/util/merge_vector.hpp
hpx/parallel/util/nbits.hpp
hpx/parallel/util/range.hpp
hpx/parallel/util/result_types.hpp
asio
hpx/asio/asio_util.hpp
assertion
hpx/assertion/evaluate_assert.hpp
hpx/modules/assertion.hpp
async_base
hpx/async_base/launch_policy.hpp
async_combinators
hpx/async_combinators/split_future.hpp
hpx/async_combinators/wait_all.hpp
hpx/async_combinators/wait_any.hpp
hpx/async_combinators/wait_each.hpp
hpx/async_combinators/wait_some.hpp
hpx/async_combinators/when_all.hpp
hpx/async_combinators/when_any.hpp
hpx/async_combinators/when_each.hpp
hpx/async_combinators/when_some.hpp
async_cuda
hpx/async_cuda/cublas_executor.hpp
hpx/async_cuda/cuda_executor.hpp
async_mpi
hpx/async_mpi/mpi_executor.hpp
hpx/async_mpi/transform_mpi.hpp
cache
hpx/cache/local_cache.hpp
hpx/cache/lru_cache.hpp
hpx/cache/entries/entry.hpp
hpx/cache/entries/fifo_entry.hpp
hpx/cache/entries/lfu_entry.hpp
hpx/cache/entries/lru_entry.hpp
hpx/cache/entries/size_entry.hpp
hpx/cache/statistics/local_statistics.hpp
hpx/cache/statistics/no_statistics.hpp
compute_local
hpx/compute_local/vector.hpp
hpx/compute_local/host/block_executor.hpp
config
hpx/config/endian.hpp
coroutines
hpx/coroutines/thread_enums.hpp
hpx/coroutines/thread_id_type.hpp
debugging
hpx/debugging/print.hpp
errors
hpx/errors/error.hpp
hpx/errors/error_code.hpp
hpx/errors/exception.hpp
hpx/errors/exception_fwd.hpp
hpx/errors/exception_list.hpp
hpx/errors/throw_exception.hpp
execution
hpx/execution/executors/adaptive_static_chunk_size.hpp
hpx/execution/executors/auto_chunk_size.hpp
hpx/execution/executors/dynamic_chunk_size.hpp
hpx/execution/executors/execution.hpp
hpx/execution/executors/execution_information.hpp
hpx/execution/executors/execution_parameters.hpp
hpx/execution/executors/execution_parameters_fwd.hpp
hpx/execution/executors/guided_chunk_size.hpp
hpx/execution/executors/num_cores.hpp
hpx/execution/executors/persistent_auto_chunk_size.hpp
hpx/execution/executors/polymorphic_executor.hpp
hpx/execution/executors/rebind_executor.hpp
hpx/execution/executors/static_chunk_size.hpp
hpx/execution/traits/is_execution_policy.hpp
execution_base
hpx/execution_base/execution.hpp
hpx/execution_base/receiver.hpp
hpx/execution_base/traits/is_executor_parameters.hpp
executors
hpx/executors/annotating_executor.hpp
hpx/executors/current_executor.hpp
hpx/executors/exception_list.hpp
hpx/executors/execution_policy.hpp
hpx/executors/execution_policy_annotation.hpp
hpx/executors/execution_policy_mappings.hpp
hpx/executors/execution_policy_parameters.hpp
hpx/executors/fork_join_executor.hpp
hpx/executors/parallel_executor.hpp
hpx/executors/parallel_executor_aggregated.hpp
hpx/executors/restricted_thread_pool_executor.hpp
hpx/executors/scheduler_executor.hpp
hpx/executors/sequenced_executor.hpp
hpx/executors/service_executors.hpp
hpx/executors/std_execution_policy.hpp
hpx/executors/thread_pool_scheduler.hpp
hpx/executors/datapar/execution_policy.hpp
hpx/executors/datapar/execution_policy_mappings.hpp
filesystem
hpx/modules/filesystem.hpp
functional
hpx/functional/invoke.hpp
hpx/functional/invoke_fused.hpp
futures
hpx/futures/future_fwd.hpp
io_service
hpx/io_service/io_service_pool.hpp
lcos_local
hpx/lcos_local/and_gate.hpp
hpx/lcos_local/conditional_trigger.hpp
hpx/lcos_local/trigger.hpp
pack_traversal
hpx/pack_traversal/pack_traversal.hpp
hpx/pack_traversal/pack_traversal_async.hpp
hpx/pack_traversal/unwrap.hpp
preprocessor
hpx/preprocessor/cat.hpp
hpx/preprocessor/expand.hpp
hpx/preprocessor/nargs.hpp
hpx/preprocessor/stringize.hpp
hpx/preprocessor/strip_parens.hpp
resiliency
hpx/resiliency/replay_executor.hpp
hpx/resiliency/replicate_executor.hpp
runtime_configuration
hpx/runtime_configuration/component_commandline_base.hpp
hpx/runtime_configuration/component_registry_base.hpp
hpx/runtime_configuration/plugin_registry_base.hpp
hpx/runtime_configuration/runtime_mode.hpp
runtime_local
hpx/runtime_local/component_startup_shutdown_base.hpp
hpx/runtime_local/custom_exception_info.hpp
hpx/runtime_local/get_locality_id.hpp
hpx/runtime_local/get_locality_name.hpp
hpx/runtime_local/get_num_all_localities.hpp
hpx/runtime_local/get_os_thread_count.hpp
hpx/runtime_local/get_thread_name.hpp
hpx/runtime_local/get_worker_thread_num.hpp
hpx/runtime_local/report_error.hpp
hpx/runtime_local/runtime_local.hpp
hpx/runtime_local/runtime_local_fwd.hpp
hpx/runtime_local/service_executors.hpp
hpx/runtime_local/shutdown_function.hpp
hpx/runtime_local/startup_function.hpp
hpx/runtime_local/thread_hooks.hpp
hpx/runtime_local/thread_pool_helpers.hpp
serialization
hpx/serialization/base_object.hpp
synchronization
hpx/synchronization/barrier.hpp
hpx/synchronization/counting_semaphore.hpp
hpx/synchronization/event.hpp
hpx/synchronization/latch.hpp
hpx/synchronization/recursive_mutex.hpp
hpx/synchronization/sliding_semaphore.hpp
thread_pool_util
hpx/thread_pool_util/thread_pool_suspension_helpers.hpp
threading_base
hpx/threading_base/annotated_function.hpp
hpx/threading_base/print.hpp
hpx/threading_base/register_thread.hpp
hpx/threading_base/thread_data.hpp
hpx/threading_base/thread_description.hpp
hpx/threading_base/thread_helpers.hpp
hpx/threading_base/thread_num_tss.hpp
hpx/threading_base/thread_pool_base.hpp
hpx/threading_base/threading_base_fwd.hpp
threadmanager
hpx/modules/threadmanager.hpp
timed_execution
hpx/timed_execution/timed_execution.hpp
hpx/timed_execution/timed_execution_fwd.hpp
hpx/timed_execution/timed_executors.hpp
hpx/timed_execution/traits/is_timed_executor.hpp
topology
hpx/topology/cpu_mask.hpp
hpx/topology/topology.hpp
util
hpx/util/insert_checked.hpp
hpx/util/sed_transform.hpp
actions
hpx/actions/action_support.hpp
hpx/actions/actions_fwd.hpp
hpx/actions/base_action.hpp
hpx/actions/transfer_action.hpp
hpx/actions/transfer_base_action.hpp
actions_base
hpx/actions_base/actions_base_fwd.hpp
hpx/actions_base/actions_base_support.hpp
hpx/actions_base/basic_action.hpp
hpx/actions_base/basic_action_fwd.hpp
hpx/actions_base/component_action.hpp
hpx/actions_base/lambda_to_action.hpp
hpx/actions_base/plain_action.hpp
hpx/actions_base/preassigned_action_id.hpp
hpx/actions_base/traits/action_remote_result.hpp
agas
hpx/agas/addressing_service.hpp
agas_base
hpx/agas_base/server/primary_namespace.hpp
async_colocated
hpx/async_colocated/get_colocation_id.hpp
async_distributed
hpx/async_distributed/base_lco.hpp
hpx/async_distributed/base_lco_with_value.hpp
hpx/async_distributed/lcos_fwd.hpp
hpx/async_distributed/packaged_action.hpp
hpx/async_distributed/promise.hpp
hpx/async_distributed/transfer_continuation_action.hpp
hpx/async_distributed/trigger_lco.hpp
hpx/async_distributed/trigger_lco_fwd.hpp
checkpoint
hpx/checkpoint/checkpoint.hpp
checkpoint_base
hpx/checkpoint_base/checkpoint_data.hpp
collectives
hpx/collectives/all_gather.hpp
hpx/collectives/all_reduce.hpp
hpx/collectives/all_to_all.hpp
hpx/collectives/argument_types.hpp
hpx/collectives/barrier.hpp
hpx/collectives/broadcast.hpp
hpx/collectives/broadcast_direct.hpp
hpx/collectives/channel_communicator.hpp
hpx/collectives/communication_set.hpp
hpx/collectives/create_communicator.hpp
hpx/collectives/exclusive_scan.hpp
hpx/collectives/fold.hpp
hpx/collectives/gather.hpp
hpx/collectives/inclusive_scan.hpp
hpx/collectives/latch.hpp
hpx/collectives/reduce.hpp
hpx/collectives/reduce_direct.hpp
hpx/collectives/scatter.hpp
components
hpx/components/basename_registration.hpp
hpx/components/basename_registration_fwd.hpp
hpx/components/components_fwd.hpp
hpx/components/get_ptr.hpp
components_base
hpx/components_base/agas_interface.hpp
hpx/components_base/component_commandline.hpp
hpx/components_base/component_startup_shutdown.hpp
hpx/components_base/component_type.hpp
hpx/components_base/components_base_fwd.hpp
hpx/components_base/get_lva.hpp
hpx/components_base/server/fixed_component_base.hpp
hpx/components_base/server/managed_component_base.hpp
compute
hpx/compute/host/target_distribution_policy.hpp
distribution_policies
hpx/distribution_policies/binpacking_distribution_policy.hpp
hpx/distribution_policies/colocating_distribution_policy.hpp
hpx/distribution_policies/target_distribution_policy.hpp
hpx/distribution_policies/unwrapping_result_policy.hpp
executors_distributed
hpx/executors_distributed/distribution_policy_executor.hpp
init_runtime
hpx/hpx_finalize.hpp
hpx/hpx_init.hpp
hpx/hpx_init_impl.hpp
hpx/hpx_init_params.hpp
hpx/hpx_start.hpp
hpx/hpx_start_impl.hpp
hpx/hpx_suspend.hpp
naming_base
hpx/naming_base/unmanaged.hpp
parcelset
hpx/parcelset/connection_cache.hpp
hpx/parcelset/message_handler_fwd.hpp
hpx/parcelset/parcelhandler.hpp
hpx/parcelset/parcelset_fwd.hpp
parcelset_base
hpx/parcelset_base/parcelport.hpp
hpx/parcelset_base/parcelset_base_fwd.hpp
hpx/parcelset_base/set_parcel_write_handler.hpp
performance_counters
hpx/performance_counters/counter_creators.hpp
hpx/performance_counters/counters.hpp
hpx/performance_counters/counters_fwd.hpp
hpx/performance_counters/manage_counter_type.hpp
hpx/performance_counters/registry.hpp
plugin_factories
hpx/plugin_factories/binary_filter_factory.hpp
hpx/plugin_factories/message_handler_factory.hpp
hpx/plugin_factories/parcelport_factory.hpp
hpx/plugin_factories/plugin_registry.hpp
runtime_components
hpx/runtime_components/component_factory.hpp
hpx/runtime_components/component_registry.hpp
hpx/runtime_components/components_fwd.hpp
hpx/runtime_components/default_distribution_policy.hpp
hpx/runtime_components/derived_component_factory.hpp
hpx/runtime_components/new.hpp
runtime_distributed
hpx/runtime_distributed.hpp
hpx/runtime_distributed/applier.hpp
hpx/runtime_distributed/applier_fwd.hpp
hpx/runtime_distributed/copy_component.hpp
hpx/runtime_distributed/find_all_localities.hpp
hpx/runtime_distributed/find_here.hpp
hpx/runtime_distributed/find_localities.hpp
hpx/runtime_distributed/get_locality_name.hpp
hpx/runtime_distributed/get_num_localities.hpp
hpx/runtime_distributed/migrate_component.hpp
hpx/runtime_distributed/runtime_fwd.hpp
hpx/runtime_distributed/runtime_support.hpp
hpx/runtime_distributed/server/copy_component.hpp
hpx/runtime_distributed/server/runtime_support.hpp
hpx/runtime_distributed/stubs/runtime_support.hpp
segmented_algorithms
hpx/parallel/segmented_algorithms/adjacent_difference.hpp
hpx/parallel/segmented_algorithms/adjacent_find.hpp
hpx/parallel/segmented_algorithms/all_any_none.hpp
hpx/parallel/segmented_algorithms/count.hpp
hpx/parallel/segmented_algorithms/exclusive_scan.hpp
hpx/parallel/segmented_algorithms/fill.hpp
hpx/parallel/segmented_algorithms/for_each.hpp
hpx/parallel/segmented_algorithms/generate.hpp
hpx/parallel/segmented_algorithms/inclusive_scan.hpp
hpx/parallel/segmented_algorithms/minmax.hpp
hpx/parallel/segmented_algorithms/reduce.hpp
hpx/parallel/segmented_algorithms/transform.hpp
hpx/parallel/segmented_algorithms/transform_exclusive_scan.hpp
hpx/parallel/segmented_algorithms/transform_inclusive_scan.hpp
hpx/parallel/segmented_algorithms/transform_reduce.hpp
Developer documentation
Contributing to
HPX
Contributing to
HPX
HPX
governance model
Release procedure for
HPX
Testing
HPX
Using docker for development
Documentation
Module structure
Other
Releases
HPX
V1.8.1 (Aug 5, 2022)
HPX
V1.8.0 (May 18, 2022)
HPX
V1.7.1 (Aug 12, 2021)
HPX
V1.7.0 (Jul 14, 2021)
HPX
V1.6.0 (Feb 17, 2021)
HPX
V1.5.1 (Sep 30, 2020)
HPX
V1.5.0 (Sep 02, 2020)
HPX
V1.4.1 (Feb 12, 2020)
HPX
V1.4.0 (January 15, 2020)
HPX
V1.3.0 (May 23, 2019)
HPX
V1.2.1 (Feb 19, 2019)
HPX
V1.2.0 (Nov 12, 2018)
HPX
V1.1.0 (Mar 24, 2018)
HPX
V1.0.0 (Apr 24, 2017)
HPX
V0.9.99 (Jul 15, 2016)
HPX
V0.9.11 (Nov 11, 2015)
HPX
V0.9.10 (Mar 24, 2015)
HPX
V0.9.9 (Oct 31, 2014, codename Spooky)
HPX
V0.9.8 (Mar 24, 2014)
HPX
V0.9.7 (Nov 13, 2013)
HPX
V0.9.6 (Jul 30, 2013)
HPX
V0.9.5 (Jan 16, 2013)
HPX
V0.9.0 (Jul 5, 2012)
HPX
V0.8.1 (Apr 21, 2012)
HPX
V0.8.0 (Mar 23, 2012)
HPX
V0.7.0 (Dec 12, 2011)
Citing
HPX
HPX
users
About
HPX
History
People
repository
open issue
Index – S
SPHINX_ROOT:PATH
command line option
std (C++ type)
,
[1]
std::filesystem (C++ type)
std::hash<::hpx::threads::thread_id> (C++ struct)
std::hash<::hpx::threads::thread_id>::operator() (C++ function)
std::hash<::hpx::threads::thread_id_ref> (C++ struct)
std::hash<::hpx::threads::thread_id_ref>::operator() (C++ function)
std::PhonyNameDueToError::operator() (C++ function)
,
[1]
std::uses_allocator<hpx::distributed::promise<R>, Allocator> (C++ struct)