HPX_REGISTER_ACTION_DECLARATION — Declare the necessary component action boilerplate code.


// In header: <hpx/runtime/actions/basic_action.hpp>



The macro HPX_REGISTER_ACTION_DECLARATION can be used to declare all the boilerplate code which is required for proper functioning of component actions in the context of HPX.

The parameter action is the type of the action to declare the boilerplate for.

This macro can be invoked with an optional second parameter. This parameter specifies a unique name of the action to be used for serialization purposes. The second parameter has to be specified if the first parameter is not usable as a plain (non-qualified) C++ identifier, i.e. the first parameter contains special characters which cannot be part of a C++ identifier, such as '<', '>', or ':'.


*       namespace app
*       {
*           // Define a simple component exposing one action 'print_greeting'
*           class HPX_COMPONENT_EXPORT server
*             : public hpx::components::simple_component_base<server>
*           {
*               void print_greeting ()
*               {
*                   hpx::cout << "Hey, how are you?\n" << hpx::flush;
*               }
*               // Component actions need to be declared, this also defines the
*               // type 'print_greeting_action' representing the action.
*               HPX_DEFINE_COMPONENT_ACTION(server,
*                   print_greeting, print_greeting_action);
*           };
*       }
*       // Declare boilerplate code required for each of the component actions.
*       HPX_REGISTER_ACTION_DECLARATION(app::server::print_greeting_action);
[Note] Note

This macro has to be used once for each of the component actions defined using one of the HPX_DEFINE_COMPONENT_ACTION macros. It has to be visible in all translation units using the action, thus it is recommended to place it into the header file defining the component.