9#ifndef DRYCHEM_COMMON_UTILITIES_INCLUDE_COMMON_UTILS_STRINGS_UTILS_LEXICALCAST_HPP
10#define DRYCHEM_COMMON_UTILITIES_INCLUDE_COMMON_UTILS_STRINGS_UTILS_LEXICALCAST_HPP
33 template<
typename T,
typename CharTraits = std::
char_traits<
char>>
34 inline auto lexical_cast(
const std::basic_string<char, CharTraits>& str)
36 if constexpr (std::is_same_v<T, std::basic_string<char, CharTraits>>)
43 std::basic_istringstream<char, CharTraits> stream;
46 stream.exceptions(std::ios::failbit | std::ios_base::badbit);
52 catch (
const std::ios_base::failure&)
65 template<
typename TO,
typename FROM,
typename = std::enable_if_t<std::is_po
inter_v<std::decay_t<FROM>>>>
80#define DEFINE_LEXI_CAST_OVERLOAD(TYPE, ABBREVIATION) \
82 inline auto ::CppUtils::Strings::lexical_cast<TYPE, std::char_traits<char>>(const std::string& str) \
84 return std::sto##ABBREVIATION(str); \
97#undef DEFINE_LEXI_CAST_OVERLOAD
#define DEFINE_LEXI_CAST_OVERLOAD(TYPE, ABBREVIATION)
Definition lexicalCast.hpp:80
void printErrorMessage(const ErrorMessage &error)
Definition errorHandling.hpp:30
Definition ciString.hpp:17
auto lexical_cast(const std::basic_string< char, CharTraits > &str)
Definition lexicalCast.hpp:34
Definition errorTypes.hpp:32