boost::capy::decomposes_to

Concept for types that decompose to a specific typelist.

Synopsis

template<
    typename T,
    typename... Types>
concept decomposes_to = requires(T&& t) {
    { detail::decomposed_types(std::forward<T>(t)) } ‐> std::same_as<std::tuple<Types...>>;
};

Description

A type satisfies decomposes_to if it can be decomposed via structured bindings into the specified types. This includes aggregates with matching member types and tuple‐like types with matching element types.

Example

struct result { int a; double b; };

static_assert(decomposes_to<result, int, double>);
static_assert(decomposes_to<std::tuple<int, double>, int, double>);

Template Parameters

Name Description

T

The type to decompose.

Types

The expected element types after decomposition.

Created with MrDocs