Section: 16.4.5.8 [res.on.functions] Status: CD1 Submitter: Nicola Musatti Opened: 2006-11-13 Last modified: 2016-01-28
Priority: Not Prioritized
View all other issues in [res.on.functions].
View all issues with CD1 status.
Discussion:
In the latest available draft standard (N2134) § 17.4.3.6 [res.on.functions] states:
-1- In certain cases (replacement functions, handler functions, operations on types used to instantiate standard library template components), the C++ Standard Library depends on components supplied by a C++ program. If these components do not meet their requirements, the Standard places no requirements on the implementation.
-2- In particular, the effects are undefined in the following cases:
[...]
- if an incomplete type (3.9) is used as a template argument when instantiating a template component.
This is contradicted by § 20.6.6.2/2 [util.smartptr.shared] which states:
[...]
The template parameter
T
ofshared_ptr
may be an incomplete type.
Proposed resolution:
Modify the last bullet of § 17.4.3.6/2 [res.on.functions] to allow for exceptions:
- if an incomplete type (3.9) is used as a template argument when instantiating a template component, unless specifically allowed for the component.