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

A type that plays the role of an initial object — either the canonical global Zero (std::nullptr_t, the unique initial of the ambient category of sets) or an opt-in structural witness via the is_initial_object_tag typedef. More...

Concept definition

template<typename T>
std::same_as<T, Zero> || requires { typename T::is_initial_object_tag; }
A type that plays the role of an initial object — either the canonical global Zero (std::nullptr_t,...
Definition limit.cppm:235

Detailed Description

A type that plays the role of an initial object — either the canonical global Zero (std::nullptr_t, the unique initial of the ambient category of sets) or an opt-in structural witness via the is_initial_object_tag typedef.

The strict std::same_as<T, Zero> branch is the historical reading: Zero is the unique initial in the umbrella category Set. The tag-discovery branch admits structural witness types declared downstream — e.g. :lattice::LatticeBottom<T, Rel> registers itself as an initial object of the lattice over (T, Rel) viewed as a thin category (#698 Slice 4).

Categorical content: initial / terminal exist relative to a category. The strict global reading covers Set; the tag-based extension lets sub-categories (lattices, posets, …) name their own initial-witness types without parameterising the concept by category.