summaryrefslogtreecommitdiff
path: root/cpp/src/Ice/ConnectionFactory.cpp
diff options
context:
space:
mode:
authorJose <jose@zeroc.com>2016-01-11 04:02:47 -0500
committerJose <jose@zeroc.com>2016-01-11 04:02:47 -0500
commit889d3abfa4cacd7c30178561c25342f93387de32 (patch)
tree602e9e4281ae3b764d9ceaacd25505337ff4116d /cpp/src/Ice/ConnectionFactory.cpp
parentC++11 fix Exception::ice_clone to use exception_ptr (diff)
downloadice-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.cpp31
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)