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.

### 2599. Library incomplete type permission phrase is unclear

Section: 20.2.6 [declval], 20.11.1 [unique.ptr], 20.11.1.2.1 [unique.ptr.dltr.general], 20.11.3 [util.smartptr.shared], 20.11.4 [util.smartptr.weak], 20.11.6 [util.smartptr.enab] Status: New Submitter: Zhihao Yuan Opened: 2016-03-08 Last modified: 2016-04-16

Priority: 3

View all issues with New status.

Discussion:

Currently the phrase to grant this permission is:

> The template parameter `T` of `LibraryTemplate` may be an incomplete type.

Two problems:

1. The timing is unclear. We always allow specializations like `LibraryTemplate<Incomp>* p;`

2. To the users of a template, the correct terminology should be "argument" rather than "parameter".

Suggested resolution:

> In an instantiation of `LibraryTemplate`, an incomplete type may be used as the template argument for the template parameter `T`.

as shown here.

Or, to copy N4510's wording:

> An incomplete type `T` may be used when instantiating `LibraryTemplate`.

Proposed resolution: