diff options
author | Jose <jose@zeroc.com> | 2018-09-07 18:47:28 +0200 |
---|---|---|
committer | Jose <jose@zeroc.com> | 2018-09-07 18:47:28 +0200 |
commit | 8cddd264e57ab89fc4c6952b2b390457a4bfbedf (patch) | |
tree | 66bb34aa13289ed0017a9460e800740516bb1278 /cpp/src/Ice/Network.cpp | |
parent | Enable test workers for PHP, Ruby and Python (diff) | |
download | ice-8cddd264e57ab89fc4c6952b2b390457a4bfbedf.tar.bz2 ice-8cddd264e57ab89fc4c6952b2b390457a4bfbedf.tar.xz ice-8cddd264e57ab89fc4c6952b2b390457a4bfbedf.zip |
Fixes for C++17 mode
Close #180
Diffstat (limited to 'cpp/src/Ice/Network.cpp')
-rwxr-xr-x | cpp/src/Ice/Network.cpp | 34 |
1 files changed, 24 insertions, 10 deletions
diff --git a/cpp/src/Ice/Network.cpp b/cpp/src/Ice/Network.cpp index 36a4e16c0c8..f4629771ac6 100755 --- a/cpp/src/Ice/Network.cpp +++ b/cpp/src/Ice/Network.cpp @@ -116,6 +116,9 @@ public: }; #ifndef ICE_OS_UWP + +# ifndef ICE_CPP11_COMPILER + struct AddressIsIPv6 : public unary_function<Address, bool> { public: @@ -126,26 +129,36 @@ public: return ss.saStorage.ss_family == AF_INET6; } }; - -struct RandomNumberGenerator : public std::unary_function<ptrdiff_t, ptrdiff_t> -{ - ptrdiff_t operator()(ptrdiff_t d) - { - return IceUtilInternal::random(static_cast<int>(d)); - } -}; +# endif void sortAddresses(vector<Address>& addrs, ProtocolSupport protocol, Ice::EndpointSelectionType selType, bool preferIPv6) { if(selType == Ice::ICE_ENUM(EndpointSelectionType, Random)) { - RandomNumberGenerator rng; - random_shuffle(addrs.begin(), addrs.end(), rng); + IceUtilInternal::shuffle(addrs.begin(), addrs.end()); } if(protocol == EnableBoth) { +#ifdef ICE_CPP11_COMPILER + if(preferIPv6) + { + stable_partition(addrs.begin(), addrs.end(), + [](const Address& ss) + { + return ss.saStorage.ss_family == AF_INET6; + }); + } + else + { + stable_partition(addrs.begin(), addrs.end(), + [](const Address& ss) + { + return ss.saStorage.ss_family != AF_INET6; + }); + } +#else if(preferIPv6) { stable_partition(addrs.begin(), addrs.end(), AddressIsIPv6()); @@ -154,6 +167,7 @@ sortAddresses(vector<Address>& addrs, ProtocolSupport protocol, Ice::EndpointSel { stable_partition(addrs.begin(), addrs.end(), not1(AddressIsIPv6())); } +#endif } } |