local_new#
Defined in header hpx/components.hpp.
See Public API for a list of names and headers that are part of the public HPX API.
See also:
-
template<typename Component, typename ...Ts>
auto hpx::local_new(Ts&&... vs)# Create one new instance of the given Component type on the current locality.
This function creates one new instance of the given Component type on the current locality and returns a future object for the global address which can be used to reference the new component instance.
Note
This function requires to specify an explicit template argument which will define what type of component(s) to create, for instance:
hpx::future<hpx::id_type> f = hpx::local_new<some_component>(...); hpx::id_type id = f.get();
Note
The difference of this function to hpx::new_ is that it can be used in cases where the supplied arguments are non-copyable and non-movable. All operations are guaranteed to be local only.
- Parameters:
vs – [in] Any number of arbitrary arguments (passed by value, by const reference or by rvalue reference) which will be forwarded to the constructor of the created component instance.
- Returns:
The function returns different types depending on its use:
If the explicit template argument Component represents a component type (
traits::is_component<Component>::valueevaluates to true), the function will return an hpx::future object instance which can be used to retrieve the global address of the newly created component. If the first argument ishpx::launch::syncthe function will directly return anhpx::id_type.If the explicit template argument Component represents a client side object (
traits::is_client<Component>::valueevaluates to true), the function will return a new instance of that type which can be used to refer to the newly created component instance.