Dedekind 0.0.0
A structuralist C++23 Module Library
Loading...
Searching...
No Matches
dedekind::sets::IsExtensional Concept Referenceexport

Concept definition

template<typename S>
concept dedekind::sets::IsExtensional = requires(const S& s) {
{ s.size() } -> std::same_as<std::size_t>;
} || is_extensional<S>::value
Definition cardinality.cppm:104

Detailed Description

(The Proof)

Note
The size() branch is guarded by a requires expression so the member-access lookup happens in the immediate context: types without a size() member (e.g. int) cleanly fail this branch and fall through to the is_extensional trait specialization, rather than producing a hard error.