This page is a snapshot from the LWG issues list, see the Library Active Issues List for more information and the meaning of New status.

### 3124. [networking.ts] Unclear how `execution_context` is intended to store services

Section: 13.7.5 [networking.ts::async.exec.ctx.globals] Status: New Submitter: Billy O'Neal III Opened: 2018-06-23 Last modified: 2020-09-06

Priority: 3

View all issues with New status.

Discussion:

Addresses: networking.ts

`make_service` and `use_service` create arbitrary numbers of type `Service`, a type provided by the user, similar to how locale's `use_facet` works. As a result there's no amount of storage that could be reserved inside `execution_context` to avoid allocating memory. However, there's no allocator support here, and `make_service` is forbidden from throwing allocation related exceptions by N4734 [async.exec.ctx.globals]/7.

If the intent is for `execution_context` to allocate memory, are user overloads of `operator new` on type `Service` intended to be used?

[2018-07-20 Priority set to 3 after reflector discussion]

[Jonathan provides wording.]

Proposed resolution:

This wording is relative to the N4762.

1. Modify 13.7.5 [networking.ts::async.exec.ctx.globals] p7:

   -7- Throws: `service_already_exists` if a corresponding service object of type `Service::key_type` is already present in the set , `bad_alloc`, or an implementation-defined exception when a resource other than memory could not be obtained. Any exception thrown by the constructor of `Service`.