|
@@ -90,13 +90,13 @@ Visibility Macros
|
|
|
The macro has an empty definition with GCC.
|
|
|
|
|
|
**Windows Behavior**: `extern template` and `dllexport` are fundamentally
|
|
|
- incompatible *on a template class* on Windows; the former suppresses
|
|
|
+ incompatible *on a class template* on Windows; the former suppresses
|
|
|
instantiation, while the latter forces it. Specifying both on the same
|
|
|
- declaration makes the template class be instantiated, which is not desirable
|
|
|
+ declaration makes the class template be instantiated, which is not desirable
|
|
|
inside headers. This macro therefore expands to `dllimport` outside of libc++
|
|
|
but nothing inside of it (rather than expanding to `dllexport`); instead, the
|
|
|
explicit instantiations themselves are marked as exported. Note that this
|
|
|
- applies *only* to extern template *classes*. Extern template *functions* obey
|
|
|
+ applies *only* to extern *class* templates. Extern *function* templates obey
|
|
|
regular import/export semantics, and applying `dllexport` directly to the
|
|
|
extern template declaration is the correct thing to do for them.
|
|
|
|