welder 0.1.0
Bindings for annotated C++ types, from C++26 reflection
Loading...
Searching...
No Matches
welder::detail::wrapper_spec Struct Reference

One row of the element-wise STL-wrapper table. More...

#include <welder/bindable.hpp>

Public Attributes

std::meta::info tmpl
 The class template, e.g.
std::size_t values
 Leading arguments to recurse; 0 = all.

Detailed Description

One row of the element-wise STL-wrapper table.

The STL templates whose target conversion is element-wise — the standard containers, std::optional, pair/tuple/variant and the smart-pointer holders — each paired with how many of its leading template arguments are value-bearing (recursed): a sequence/optional/holder exposes 1, a map or pair exposes 2 (key and value). A count of 0 is the sentinel for "all arguments" (tuple, variant). Everything after those leading args — allocators, comparators, hashers, deleters, the std::array extent — is infrastructure the backend never converts, so it is ignored.

Reflection can enumerate a specialization's arguments but cannot tell which are value-bearing, so this count is the one bit of per-template knowledge welder records; add a row to teach it a further wrapper. A template absent from the table is an opaque bindable leaf (its elements are not recursed) — e.g. a third-party container carrying its own converter.

Definition at line 89 of file bindable.hpp.

Member Data Documentation

◆ tmpl

std::meta::info welder::detail::wrapper_spec::tmpl

The class template, e.g.

^^std::vector.

Definition at line 90 of file bindable.hpp.

◆ values

std::size_t welder::detail::wrapper_spec::values

Leading arguments to recurse; 0 = all.

Definition at line 91 of file bindable.hpp.


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