Browse Source

Add std::forward and std::move autoconf check

Protobuf now uses these two features, which are not available on some
platforms.
Jisi Liu 8 years ago
parent
commit
4a4c67b6a2
1 changed files with 19 additions and 0 deletions
  1. 19 0
      m4/ax_cxx_compile_stdcxx.m4

+ 19 - 0
m4/ax_cxx_compile_stdcxx.m4

@@ -180,6 +180,8 @@ m4_define([_AX_CXX_COMPILE_STDCXX_testbody_new_in_11], [[
 
 
 #else
 #else
 
 
+#include <utility>
+
 namespace cxx11
 namespace cxx11
 {
 {
 
 
@@ -445,6 +447,23 @@ namespace cxx11
 
 
   }
   }
 
 
+  namespace test_std_move_and_forward
+  {
+    struct message {};
+    char foo(message&) { return '\0'; }
+    int foo(message&&) { return 0; }
+
+    template<typename Arg, typename RT>
+    void check(Arg&& arg, RT rt) {
+      static_assert(sizeof(rt) == sizeof(foo(std::forward<Arg>(arg))), "");
+    }
+    void test() {
+      message a;
+      check(a, char());
+      check(std::move(a), int());
+    }
+  }
+
 }  // namespace cxx11
 }  // namespace cxx11
 
 
 #endif  // __cplusplus >= 201103L
 #endif  // __cplusplus >= 201103L