8#define STRINGIFY_IMPL(x) #x
9#define STRINGIFY(x) STRINGIFY_IMPL(x)
14 std::string name_cstr{name};
15 if (
const char* env = std::getenv(name_cstr.c_str())) {
16 return fallback(std::optional<std::string_view>(env));
18 return fallback(std::optional<std::string_view>{std::nullopt});
22#define CONFIG_VALUE(name, fallback_lambda) \
24 if constexpr (std::string_view(#name) != std::string_view(STRINGIFY(name))) { \
25 return f(std::optional<std::string_view>{STRINGIFY(name)}); \
27 return arkanjo::config::resolve_config_impl(#name, f); \
auto resolve_config_impl(std::string_view name, F &&fallback)