Boost logo

Boost :

Subject: [boost] BOOST_NO_EXTERN_TEMPLATE
From: Stefan Strasser (strasser_at_[hidden])
Date: 2010-05-27 01:56:12


Hi,

Boost.Config defines the macro BOOST_NO_EXTERN_TEMPLATE, which
probably [1] refers to suppressing the instantiation of a template
using the "extern" keyword.
This is part of the C++0x draft but has long been implemented by
several compilers, including MSVC[2] and GCC[3].
BOOST_NO_EXTERN_TEMPLATE is still defined for both compilers, why is that?
do those implementations differ from the proposed C++0x behaviour[4],
so the macro is defined because it refers to a C++0x feature? Or is
this a bug?

Is using "extern template" recommended for boost libraries (under
construction)?
specifically, the library lends itself to seperate precompiled source
and started out as such, but making it more configurable turned
seperate source code into templates and increased compile time.
the default use case (which was the only use case before) could still
be compiled seperately if "extern template" is available.

[1] the documentation says the macro indicates no support for explicit
instantiation. I assume this is a documentation bug, because of its
name and it's listed as a C++0x feature:
http://www.boost.org/doc/libs/1_43_0/libs/config/doc/html/boost_config/boost_macro_reference.html

[2] http://msdn.microsoft.com/en-us/library/by56e477.aspx
[3] http://gcc.gnu.org/onlinedocs/gcc/Template-Instantiation.html
[4] http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2006/n1987.htm


Boost list run by bdawes at acm.org, gregod at cs.rpi.edu, cpdaniel at pacbell.net, john at johnmaddock.co.uk