diff --git a/src/network/uri/uri.hpp b/src/network/uri/uri.hpp index ef136e0f..dc5205c8 100644 --- a/src/network/uri/uri.hpp +++ b/src/network/uri/uri.hpp @@ -16,6 +16,7 @@ #include #include #include +#include #include #include #include @@ -266,10 +267,9 @@ namespace network { boost::optional port(typename std::is_integral::type * = 0) const { if (auto p = port()) { try { - return static_cast( - std::stoi(string_type(std::begin(*p), std::end(*p)))); + return boost::lexical_cast(string_type(std::begin(*p), std::end(*p))); } - catch (std::invalid_argument &) { + catch (boost::bad_lexical_cast &) { return boost::optional(); } } diff --git a/src/network/uri/uri_builder.hpp b/src/network/uri/uri_builder.hpp index c13e79de..dfaab4f0 100644 --- a/src/network/uri/uri_builder.hpp +++ b/src/network/uri/uri_builder.hpp @@ -71,7 +71,7 @@ namespace network { struct port_converter::type>::value>::type> { uri::string_type operator () (std::uint16_t port) const { - return std::to_string(port); + return boost::lexical_cast(port); } };