cppfig 0.1.0
Modern C++20 compile-time type-safe configuration library
Loading...
Searching...
No Matches
cppfig::Configurable Concept Reference

Concept constraining types that can be used as configuration values. More...

#include <traits.h>

Concept definition

template<typename T>
concept cppfig::Configurable = requires(const T& value, const Value& val, std::string_view str) {
{ ConfigTraits<T>::Serialize(value) } -> std::convertible_to<Value>;
{ ConfigTraits<T>::Deserialize(val) } -> std::same_as<std::optional<T>>;
{ ConfigTraits<T>::ToString(value) } -> std::convertible_to<std::string>;
{ ConfigTraits<T>::FromString(str) } -> std::same_as<std::optional<T>>;
}
Concept constraining types that can be used as configuration values.
Definition traits.h:48
static auto Deserialize(const Value &value) -> std::optional< T >=delete
Deserializes a value from a Value node.
static auto ToString(const T &value) -> std::string=delete
Converts a value to a human-readable string.
static auto FromString(std::string_view str) -> std::optional< T >=delete
Parses a value from a string (e.g., from environment variables).
static auto Serialize(const T &value) -> Value=delete
Serializes a value to a Value node.

Detailed Description

Concept constraining types that can be used as configuration values.

A type satisfies Configurable if ConfigTraits<T> provides the required static member functions for serialization and conversion.