BOOST_OPENMETHOD_EXPORT_REGISTRY

Declare a registry's state exported, in every translation unit of the owning module.

Synopsis

Declared in <boost/openmethod/macros.hpp>

#define BOOST_OPENMETHOD_EXPORT_REGISTRY(REGISTRY)

Description

See BOOST_OPENMETHOD_IMPORT_REGISTRY for how the three registry‐sharing macros fit together.

Use at namespace scope, after the registry's definition, in every translation unit of the module that owns the registry. Being a declaration it may be repeated, so it belongs in the header those translation units share.

On ELF it emits an exported explicit instantiation declaration, which both suppresses implicit instantiation and pins the symbol to default visibility. On declspec platforms it expands to nothing, because there the export belongs on the instantiation instead.

On ELF this macro is not decoration. A translation unit of the owning module that uses neither it nor BOOST_OPENMETHOD_INSTANTIATE_REGISTRY instantiates the state implicitly, and under ‐fvisibility=hidden that copy is module‐local. Since ELF merges COMDATs at the most restrictive visibility, the merged symbol becomes local: the module builds, exports nothing, and clients fail to link with an undefined reference to registry_state<...>::st.

Parameters

Name

Description

REGISTRY

The registry to export. May be any registry, predefined or user‐defined.

See Also

Shared Libraries for the full discussion, including the required link setup.

Created with MrDocs