17namespace sequoia::object
20 inline constexpr bool has_name_value{
21 requires(
const T& t) { { t.name } -> std::convertible_to<std::string>; }
25 inline constexpr bool has_name_function{
26 requires(
const T& t) { { t.name() } -> std::convertible_to<std::string>; }
32 static std::string name() =
delete;
33 static std::string name(
const T&) =
delete;
37 requires has_name_value<T> || has_name_function<T>
41 std::string operator()(
const T& t)
const
43 if constexpr(has_name_function<T>)
51 inline constexpr bool has_extrinsic_nomenclator{
52 requires { {
nomenclator<T>{}() } -> std::convertible_to<std::string>; }
56 inline constexpr bool has_intrinsic_nomenclator{
57 requires(
const T& t) { { nomenclator<T>{}(t) } -> std::convertible_to<std::string>; }
61 requires has_intrinsic_nomenclator<T> || has_extrinsic_nomenclator<T>
63 std::string nomenclature([[maybe_unused]]
const T& t){
64 if constexpr(has_intrinsic_nomenclator<T>)
65 return nomenclator<T>{}(t);
67 return nomenclator<T>{}();
Definition: Nomenclator.hpp:31