11namespace nxpp::detail {
14std::optional<double> try_numeric_any_cast_as_double(
const std::any& value) {
15 if (
const auto* typed_value = std::any_cast<T>(&value)) {
16 return static_cast<double>(*typed_value);
21inline std::optional<double> try_numeric_any_cast(
const std::any& value) {
22 if (
auto converted = try_numeric_any_cast_as_double<int>(value))
return converted;
23 if (
auto converted = try_numeric_any_cast_as_double<long>(value))
return converted;
24 if (
auto converted = try_numeric_any_cast_as_double<long long>(value))
return converted;
25 if (
auto converted = try_numeric_any_cast_as_double<unsigned int>(value))
return converted;
26 if (
auto converted = try_numeric_any_cast_as_double<unsigned long>(value))
return converted;
27 if (
auto converted = try_numeric_any_cast_as_double<unsigned long long>(value))
return converted;
28 if (
auto converted = try_numeric_any_cast_as_double<float>(value))
return converted;
29 if (
auto converted = try_numeric_any_cast_as_double<double>(value))
return converted;
30 if (
auto converted = try_numeric_any_cast_as_double<long double>(value))
return converted;