diff --git a/dune/common/debugallocator.hh b/dune/common/debugallocator.hh
index a9ec69acc4c2ed92d262a3289de8690b0855dfc4..5786e004812f2b3c88eb83f8602ff69df22ae885 100644
--- a/dune/common/debugallocator.hh
+++ b/dune/common/debugallocator.hh
@@ -271,7 +271,7 @@ namespace Dune
     {
       ::new((void*)p)T(val);
     }
-#if HAVE_VARIADIC_TEMPLATES || DOXYGEN
+#if ( HAVE_VARIADIC_TEMPLATES && HAVE_RVALUE_REFERENCES ) || DOXYGEN
     //! construct an object of type T from variadic parameters
     //! \note works only with newer C++ compilers
     template<typename ... _Args>
diff --git a/m4/cxx0x_variadic.m4 b/m4/cxx0x_variadic.m4
index ec64f385451fe4bb07862e9bf21b8f9661f9d38e..fadecf0f24e1c6ab158c2af5856a5043035cecc3 100644
--- a/m4/cxx0x_variadic.m4
+++ b/m4/cxx0x_variadic.m4
@@ -18,9 +18,9 @@ AC_DEFUN([VARIADIC_TEMPLATES_CHECK],[
         }
 
         template<typename T1, typename... T>
-        int add_ints(T1 t1, T&&... t)
+        int add_ints(T1 t1, T... t)
         {
-          return t1 + add_ints(std::forward<T>(t)...);
+          return t1 + add_ints(t...);
         }], 
         [
           assert( 5 == add_ints(9,3,-5,-2) );