Boost C++ Libraries

...one of the most highly regarded and expertly designed C++ library projects in the world. Herb Sutter and Andrei Alexandrescu, C++ Coding Standards

Service requirements
Prev Up Home Next

A class is a service if it is publicly and unambiguously derived from execution_context :: service , or if it is publicly and unambiguously derived from another service. For a service S , S :: key_type shall be valid and denote a type (C++Std [temp.deduct]), is_base_of_v < typename S :: key_type , S > shall be true , and S shall satisfy the Destructible requirements (C++Std [destructible]).

The first parameter of all service constructors shall be an lvalue reference to execution_context . This parameter denotes the execution_context object that represents a set of services, of which the service object will be a member. [ Note: These constructors may be called by the make_service function. — end note ]

A service shall provide an explicit constructor with a single parameter of lvalue reference to execution_context . [ Note: This constructor may be called by the use_service function. — end note ]

class my_service : public execution_context::service
{
public:
  typedef my_service key_type;
  explicit my_service(execution_context& ctx);
  my_service(execution_context& ctx, int some_value);
private:
  virtual void shutdown() noexcept override;
  ...
};

A service's shutdown member function shall destroy all copies of user-defined function objects that are held by the service.


Prev Up Home Next