uint64_t strict_iecstrtoll(const char *str, std::string *err)
{
- return strict_iec_cast<uint64_t>(std::string_view(str), err);
-}
-
-template<typename T>
-T strict_iec_cast(const char *str, std::string *err)
-{
- return strict_iec_cast<T>(std::string_view(str), err);
+ return strict_iec_cast<uint64_t>(str, err);
}
-template int strict_iec_cast<int>(const char *str, std::string *err);
-template long strict_iec_cast<long>(const char *str, std::string *err);
-template long long strict_iec_cast<long long>(const char *str, std::string *err);
-template uint64_t strict_iec_cast<uint64_t>(const char *str, std::string *err);
-template uint32_t strict_iec_cast<uint32_t>(const char *str, std::string *err);
-
template<typename T>
T strict_si_cast(std::string_view str, std::string *err)
{
uint64_t strict_iecstrtoll(const char *str, std::string *err);
template<typename T>
-T strict_iec_cast(const char *str, std::string *err);
+T strict_iec_cast(std::string_view str, std::string *err);
uint64_t strict_sistrtoll(const char *str, std::string *err);
if (count(begin(si_options), end(si_options), var)) {
n = strict_si_cast<int64_t>(val.c_str(), &interr);
} else if (count(begin(iec_options), end(iec_options), var)) {
- n = strict_iec_cast<int64_t>(val.c_str(), &interr);
+ n = strict_iec_cast<int64_t>(val, &interr);
} else {
// parse string as both int and float; different fields use different types.
n = strict_strtoll(val.c_str(), 10, &interr);
return EINVAL;
}
} else if (ceph_argparse_witharg(args, i, &val, "--max-size", (char*)NULL)) {
- max_size = strict_iec_cast<long long>(val.c_str(), &err);
+ max_size = strict_iec_cast<long long>(val, &err);
if (!err.empty()) {
cerr << "ERROR: failed to parse max size: " << err << std::endl;
return EINVAL;