From d263aefa61722cdb4a7dcb99f9ce856c96c5b3e1 Mon Sep 17 00:00:00 2001
From: Sam Yates <sam@quux.dropbear.id.au>
Date: Thu, 1 Sep 2016 20:24:44 +0200
Subject: [PATCH] Compatibiliy fixes for gcc 4.9.2, clang 3.5

See defect report:
http://www.open-std.org/jtc1/sc22/wg21/docs/cwg_defects.html#1467
---
 src/util/meta.hpp       | 6 ------
 src/util/transform.hpp  | 2 +-
 tests/unit/test_nop.cpp | 8 ++++----
 3 files changed, 5 insertions(+), 11 deletions(-)

diff --git a/src/util/meta.hpp b/src/util/meta.hpp
index 210cb439..40f08d48 100644
--- a/src/util/meta.hpp
+++ b/src/util/meta.hpp
@@ -55,12 +55,6 @@ struct sequence_traits {
     using const_sentinel = decltype(cend(std::declval<Seq&>()));
 };
 
-template <typename X>
-std::size_t size(const X& x) { return x.size(); }
-
-template <typename X, std::size_t N>
-constexpr std::size_t size(X (&)[N]) { return N; }
-
 // Convenience short cuts
 
 template <typename T>
diff --git a/src/util/transform.hpp b/src/util/transform.hpp
index f7d9fed0..d6c930db 100644
--- a/src/util/transform.hpp
+++ b/src/util/transform.hpp
@@ -38,7 +38,7 @@ public:
     using reference = const value_type&;
 
     template <typename J, typename G>
-    transform_iterator(J&& c, G&& g): inner_{std::forward<J>(c)}, f_{std::forward<G>(g)} {}
+    transform_iterator(J&& c, G&& g): inner_(std::forward<J>(c)), f_(std::forward<G>(g)) {}
 
     transform_iterator(const transform_iterator&) = default;
     transform_iterator(transform_iterator&&) = default;
diff --git a/tests/unit/test_nop.cpp b/tests/unit/test_nop.cpp
index e3571ad8..0ee03db2 100644
--- a/tests/unit/test_nop.cpp
+++ b/tests/unit/test_nop.cpp
@@ -4,7 +4,7 @@
 using namespace nest::mc::util;
 
 TEST(nop, void_fn) {
-    std::function<void ()> f{nop_function};
+    std::function<void ()> f(nop_function);
 
     EXPECT_TRUE(f);
     f(); // should do nothing
@@ -20,7 +20,7 @@ TEST(nop, void_fn) {
     EXPECT_FALSE(flag);
 
     // with some arguments
-    std::function<void (int, int)> g{nop_function};
+    std::function<void (int, int)> g(nop_function);
     EXPECT_TRUE(g);
     g(2, 3); // should do nothing
 
@@ -43,7 +43,7 @@ struct check_default {
 };
 
 TEST(nop, default_return_fn) {
-    std::function<check_default ()> f{nop_function};
+    std::function<check_default ()> f(nop_function);
 
     EXPECT_TRUE(f);
     auto result = f();
@@ -57,7 +57,7 @@ TEST(nop, default_return_fn) {
     result = f();
     EXPECT_EQ(result.value, 100);
 
-    std::function<check_default (double, double)> g{nop_function};
+    std::function<check_default (double, double)> g(nop_function);
 
     EXPECT_TRUE(g);
     result = g(1.4, 1.5);
-- 
GitLab