welder 0.1.0
Bindings for annotated C++ types, from C++26 reflection
Loading...
Searching...
No Matches
welder::detail::scoped_registration< Resolution, Scope > Struct Template Reference

The scope-aware registration oracle: Resolution widened with the member-alias registrations of one class. More...

#include <welder/carriage.hpp>

Inheritance diagram for welder::detail::scoped_registration< Resolution, Scope >:

Static Public Member Functions

static consteval bool counts_as_registered (std::meta::info type, lang L)

Detailed Description

template<class Resolution, std::meta::info Scope>
struct welder::detail::scoped_registration< Resolution, Scope >

The scope-aware registration oracle: Resolution widened with the member-alias registrations of one class.

A member alias's weld-free participation is invisible from the target type (an alias is unrecoverable from the type it names), so the plain oracle cannot vouch for the types a class's own aliases register. The carriage therefore gates the class's members through this wrapper — Scope is the welded type being bound — which additionally counts (a) types a participating member alias of Scope registers, and (b) the nested-type chain re-run alias-aware, so an alias target's own nested types recurse through here too. Cross-class use of an alias-registered type stays trust_bindable territory, consistent with the namespace-alias blind spot.

Inherits Resolution so every participation hook (including an optional protected_participates) keeps working when this wrapper is threaded where a resolution is expected; only the oracle is shadowed.

Template Parameters
Resolutionthe carriage's resolution policy.
Scopethe welded class whose members are being gated.

Definition at line 221 of file carriage.hpp.

Member Function Documentation

◆ counts_as_registered()

template<class Resolution, std::meta::info Scope>
consteval bool welder::detail::scoped_registration< Resolution, Scope >::counts_as_registered ( std::meta::info type,
lang L )
inlinestaticconsteval

The documentation for this struct was generated from the following file: