/usr/include/measurement_kit/common/lexical_cast.hpp is in libmeasurement-kit-dev 0.7.1-2build1.
This file is owned by root:root, with mode 0o644.
The actual contents of the file can be viewed below.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 | // Part of measurement-kit <https://measurement-kit.github.io/>.
// Measurement-kit is free software. See AUTHORS and LICENSE for more
// information on the copying conditions.
#ifndef MEASUREMENT_KIT_COMMON_LEXICAL_CAST_HPP
#define MEASUREMENT_KIT_COMMON_LEXICAL_CAST_HPP
#include <measurement_kit/common/error_or.hpp>
#include <sstream>
namespace mk {
template <typename To, typename From> To lexical_cast(From f) {
std::stringstream ss;
To value;
ss << f;
ss >> value;
if (!ss.eof()) {
throw ValueError(); // Not all input was converted
}
if (ss.fail()) {
throw ValueError(); // Input format was wrong
}
return value;
}
template <typename To, typename From>
ErrorOr<To> lexical_cast_noexcept(From f) {
try {
return lexical_cast<To, From>(f);
} catch (Error err) {
return err;
}
}
} // namespace mk
#endif
|