diff --git a/Net/include/Poco/Net/HostEntry.h b/Net/include/Poco/Net/HostEntry.h index f194ca659..e3dfab53e 100644 --- a/Net/include/Poco/Net/HostEntry.h +++ b/Net/include/Poco/Net/HostEntry.h @@ -76,13 +76,6 @@ public: /// for the host. private: - template - void removeDuplicates(C& list) - { - std::sort(list.begin(), list.end()); - auto last = std::unique(list.begin(), list.end()); - list.erase(last, list.end()); - } std::string _name; AliasList _aliases; diff --git a/Net/src/HostEntry.cpp b/Net/src/HostEntry.cpp index 79a1d7cae..b045d264f 100644 --- a/Net/src/HostEntry.cpp +++ b/Net/src/HostEntry.cpp @@ -15,12 +15,25 @@ #include "Poco/Net/HostEntry.h" #include "Poco/Exception.h" #include +#include namespace Poco { namespace Net { +template +void removeDuplicates(std::vector& list) +{ + std::set uniqueValues; + // Remove duplicates and preserve order + list.erase( + std::remove_if(list.begin(), list.end(), [&uniqueValues](const T& value) { return !uniqueValues.insert(value).second; }), + list.end() + ); +} + + HostEntry::HostEntry() { }