Section: 22.2.6 [declval], 20.3.1 [unique.ptr], 20.3.1.2.1 [unique.ptr.dltr.general], 20.3.2.2 [util.smartptr.shared], 20.3.2.3 [util.smartptr.weak], 20.3.2.7 [util.smartptr.enab] Status: New Submitter: Zhihao Yuan Opened: 2016-03-08 Last modified: 2016-04-16
Priority: 3
View other active issues in [declval].
View all other issues in [declval].
View all issues with New status.
Discussion:
Currently the phrase to grant this permission is:
The template parameter
T
ofLibraryTemplate
may be an incomplete type.
Two problems:
The timing is unclear. We always allow specializations like LibraryTemplate<Incomp>* p;
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 parameterT
.
as shown here.
Or, to copy N4510's wording:An incomplete type
T
may be used when instantiatingLibraryTemplate
.
Proposed resolution: