Title
Standard library templates and incomplete types
Status
cd1
Section
[res.on.functions]
Submitter
Nicola Musatti

Created on 2006-11-13.00:00:00 last changed 164 months ago

Messages

Date: 2010-10-21.18:28:33

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.
Date: 2006-11-13.00:00:00

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 of shared_ptr may be an incomplete type.

History
Date User Action Args
2010-10-21 18:28:33adminsetmessages: + msg3210
2006-11-13 00:00:00admincreate