Boost C++ Libraries

...one of the most highly regarded and expertly designed C++ library projects in the world. Herb Sutter and Andrei Alexandrescu, C++ Coding Standards

StaticRow concept
PrevUpHomeNext

A StaticRow is a C++ type that can be used to model a row within the static interface (i.e. can be passed as template parameter to static_results and static_execution_state).

Formally, a type T is a StaticRow if either of the following is true:

  • It is a non-const struct annotated with Boost.Describe data (i.e., having boost::describe::has_describe_members<T>::value == true), and all the described members fulfill the ReadableField exposition-only concept.
  • It is a non-const std::tuple instantiation, and all of its types fulfill the ReadableField exposition-only concept.
  • It is an instantiation of the pfr_by_name or pfr_by_position marker types using a type Underlying that satisfies the following:
    • Is reflectable using Boost.PFR. For C++17 and later, this means satisfying SimpleAggregate. For C++14, stricter requirements apply - see the Boost.PFR docs for more info.
    • Is a non-const object type (i.e. not a union or built-in type).
    • All of its fields (as given by pfr::structure_to_tuple) satisfy ReadableField.

Note that row types with no fields (like empty Describe structs and empty tuples) are valid StaticRows.

A ReadableField is C++ type that can be used to model a single value in a database row. A type F is a ReadableField if it is any of the types listed in this table. The set of readable field types is currently fixed and can't be extended by the user. If this is something you have interest in, please file an issue with your use case to the repo.

The set of allowable types may be extended in future releases, both for fields and for rows.


PrevUpHomeNext