serif::utils::projection serif::utils::projection::backend serif::utils::projection::detail std::expected< double, std::string > using serif::utils::projection::RadialValue = std::expected<double, std::string> RadialValue serif::utils::projection::RadialValue