|
welder 0.1.0
Bindings for annotated C++ types, from C++26 reflection
|
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. | |
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.
| std::meta::info welder::detail::wrapper_spec::tmpl |
| std::size_t welder::detail::wrapper_spec::values |
Leading arguments to recurse; 0 = all.
Definition at line 91 of file bindable.hpp.