diff options
author | Jose <jose@zeroc.com> | 2016-01-11 04:02:47 -0500 |
---|---|---|
committer | Jose <jose@zeroc.com> | 2016-01-11 04:02:47 -0500 |
commit | 889d3abfa4cacd7c30178561c25342f93387de32 (patch) | |
tree | 602e9e4281ae3b764d9ceaacd25505337ff4116d /cpp/src/Ice/ConnectionFactory.cpp | |
parent | C++11 fix Exception::ice_clone to use exception_ptr (diff) | |
download | ice-889d3abfa4cacd7c30178561c25342f93387de32.tar.bz2 ice-889d3abfa4cacd7c30178561c25342f93387de32.tar.xz ice-889d3abfa4cacd7c30178561c25342f93387de32.zip |
C++11 build fixes for gcc 4.8 on rhel7
Diffstat (limited to 'cpp/src/Ice/ConnectionFactory.cpp')
-rw-r--r-- | cpp/src/Ice/ConnectionFactory.cpp | 31 |
1 files changed, 29 insertions, 2 deletions
diff --git a/cpp/src/Ice/ConnectionFactory.cpp b/cpp/src/Ice/ConnectionFactory.cpp index 43652e08478..bbebcbd19b0 100644 --- a/cpp/src/Ice/ConnectionFactory.cpp +++ b/cpp/src/Ice/ConnectionFactory.cpp @@ -393,9 +393,24 @@ IceInternal::OutgoingConnectionFactory::findConnection(const vector<EndpointIPtr DefaultsAndOverridesPtr defaultsAndOverrides = _instance->defaultsAndOverrides(); assert(!endpoints.empty()); +#ifdef ICE_CPP11_MAPPING + // + // COMPILERFIX: G++ 4.8 fails to deduce the type of the lambda callback if passed + // directly to find. + // + std::function<bool (const ConnectionIPtr&)> cb = [](const ConnectionIPtr& conn) + { + return conn->isActiveOrHolding(); + }; +#endif for(vector<EndpointIPtr>::const_iterator p = endpoints.begin(); p != endpoints.end(); ++p) { - ConnectionIPtr connection = find(_connectionsByEndpoint, *p, Ice::constMemFun(&ConnectionI::isActiveOrHolding)); + ConnectionIPtr connection = find(_connectionsByEndpoint, *p, +#ifdef ICE_CPP11_MAPPING + cb); +#else + Ice::constMemFun(&ConnectionI::isActiveOrHolding)); +#endif if(connection) { if(defaultsAndOverrides->overrideCompress) @@ -425,7 +440,19 @@ IceInternal::OutgoingConnectionFactory::findConnection(const vector<ConnectorInf continue; } - ConnectionIPtr connection = find(_connections, p->connector, Ice::constMemFun(&ConnectionI::isActiveOrHolding)); +#ifdef ICE_CPP11_MAPPING + std::function<bool (const ConnectionIPtr&)> cb = [](const ConnectionIPtr& conn) + { + return conn->isActiveOrHolding(); + }; +#endif + + ConnectionIPtr connection = find(_connections, p->connector, +#ifdef ICE_CPP11_MAPPING + cb); +#else + Ice::constMemFun(&ConnectionI::isActiveOrHolding)); +#endif if(connection) { if(defaultsAndOverrides->overrideCompress) |