This pull request removes the boost/algorithm/string/case_conv.hpp dependency from the project.
boost/algorithm/string/case_conv.hpp is included for the boost::to_lower and boost::to_upper template functions.
We can replace the calls to these functions with straightforward alternative implementations that use the C++ Standard Library, because the functions are called with std::string objects that use standard 7-bit ASCII characters as argument.
The refactored implementation should work without the explicit static_cast<unsigned char> cast and unsigned char lambda return type. Both have been added defensively and to be explicit. Especially in case of the former, behaviour is undefined (potentially result in a crash) if the std::toupper argument is not an unsigned char.
A potential alternative, maybe even preferred, implementation to address the boost::to_lower function call in ParseNetwork(std::string) could have been:
0if (net == "ipv4" || net == "IPv4") return NET_IPV4;
1if (net == "ipv6" || net == "IPv6") return NET_IPV6;
This alternative implementation would however change the external behaviour of ParseNetwork(std::string).
This pull requests includes a unit test to validate the implementation of ParseNetwork(std::string) prior and after the removal of the case_conv.hpp dependency.
boost/algorithm/string/case_conv.hpp has been removed from the EXPECTED_BOOST_INCLUDES in test/lint/lint-includes.sh because it is no longer required.