native 0.0.1
Vectors, masks and wide register packs for C++26
Loading...
Searching...
No Matches
Explicit Template Instantiation

attributes that can control explicit template instantiation More...

Collaboration diagram for Explicit Template Instantiation:

Macros

#define native_visibility(...)
 [[visibility(x)]]
#define native_exclude_from_explicit_instantiation
 exclude this member from explicit template instantiation.
#define native_hidden   native_visibility("hidden") native_exclude_from_explicit_instantiation
 [[visibility("hidden")]] [[exclude_from_explicit_instantiations]]

Detailed Description

attributes that can control explicit template instantiation

Macro Definition Documentation

◆ native_exclude_from_explicit_instantiation

#define native_exclude_from_explicit_instantiation

exclude this member from explicit template instantiation.

Usually paired with native_visibility("hidden"), see native_hidden

Definition at line 373 of file attributes.h.

◆ native_hidden

#define native_hidden   native_visibility("hidden") native_exclude_from_explicit_instantiation

[[visibility("hidden")]] [[exclude_from_explicit_instantiations]]

Use to exclude from both having to compute in explicit template instantiations and expecting it to be stored. This means that the resulting member is safely delayed to the usage site, despite the template being explicitly otherwise instantiated. Useful for #native_inline and the general sort of SIMD intrinsic wrappers where there's no point in emitting a function body that will never be called, and will just bloat executable size.

Definition at line 390 of file attributes.h.

◆ native_visibility

#define native_visibility ( ...)

[[visibility(x)]]

Primarily used for [[visibility("hidden")]] to disable inclusion of the symbol in the resulting library

Definition at line 358 of file attributes.h.