Topic: Defect Report: Standard library templates and incomplete types


Author: "Nicola Musatti" <nicola.musatti@gmail.com>
Date: Mon, 13 Nov 2006 09:44:26 CST
Raw View
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.

The last bullet of     17.4.3.6/2 should be modified to allow for
exceptions, as in:

- if an incomplete type (3.9) is used as a template argument when
  instantiating a template component, unless explicitly specified
otherwise.

Cheers,
Nicola Musatti


---
[ comp.std.c++ is moderated.  To submit articles, try just posting with ]
[ your news-reader.  If that fails, use mailto:std-c++@ncar.ucar.edu    ]
[              --- Please see the FAQ before posting. ---               ]
[ FAQ: http://www.comeaucomputing.com/csc/faq.html                      ]