diff --git a/src/amdis/gridfunctions/Integrate.hpp b/src/amdis/gridfunctions/Integrate.hpp
index c84833e2c6727ad53fdde8177a282d97613dabe1..a433f4c36b5ddc18d41569784742ebd3b45cdd9b 100644
--- a/src/amdis/gridfunctions/Integrate.hpp
+++ b/src/amdis/gridfunctions/Integrate.hpp
@@ -61,7 +61,7 @@ namespace AMDiS
       return 0.0;
 #else
     return Dune::Hybrid::ifElse(bool_<expr_has_order>,
-      [&](auto) { return Impl::integrateImpl(std::forward<decltype(gridFct)>(gridFct), gridView, makeQuad); },
+      [&](auto) { return Impl::integrateImpl(gridFct, gridView, makeQuad); },
       [ ](auto) { return 0.0; });
 #endif
   }
diff --git a/test/CMakeLists.txt b/test/CMakeLists.txt
index a18847f2d39daccece5343aa6a264d16ff6c591f..35cf6057b570c161fd0983259f0911adcddb5381 100644
--- a/test/CMakeLists.txt
+++ b/test/CMakeLists.txt
@@ -24,6 +24,10 @@ dune_add_test(SOURCES FiniteElementTypeTest.cpp
 dune_add_test(SOURCES FilesystemTest.cpp
   LINK_LIBRARIES amdis)
 
+dune_add_test(SOURCES IntegrateTest.cpp
+  LINK_LIBRARIES amdis
+  CMD_ARGS "${CMAKE_SOURCE_DIR}/examples/init/ellipt.dat.2d")
+
 dune_add_test(SOURCES MarkerTest.cpp
   LINK_LIBRARIES amdis
   CMD_ARGS "${CMAKE_SOURCE_DIR}/examples/init/marker.dat.2d")
diff --git a/test/IntegrateTest.cpp b/test/IntegrateTest.cpp
new file mode 100644
index 0000000000000000000000000000000000000000..a94c26f59f1c8ca34ce123b735c7a98876afc85e
--- /dev/null
+++ b/test/IntegrateTest.cpp
@@ -0,0 +1,48 @@
+// -*- tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-
+// vi: set et ts=4 sw=2 sts=2:
+
+#include <iostream>
+
+#include <dune/geometry/type.hh>
+
+#include <amdis/AMDiS.hpp>
+#include <amdis/ProblemStat.hpp>
+#include <amdis/Operators.hpp>
+#include <amdis/common/Literals.hpp>
+#include <amdis/common/FieldMatVec.hpp>
+#include <amdis/gridfunctions/Integrate.hpp>
+
+#include "Tests.hpp"
+
+using namespace AMDiS;
+
+using ElliptParam   = YaspGridBasis<2, 2>;
+using ElliptProblem = ProblemStat<ElliptParam>;
+
+int main(int argc, char** argv)
+{
+  AMDiS::init(argc, argv);
+
+  ElliptProblem prob("ellipt");
+  prob.initialize(INIT_ALL);
+
+  auto u = prob.getSolution(0);
+  auto gv = u.basis().gridView();
+
+  u << 1.0;
+  auto i1 = integrate(1.0, gv);
+  auto i2 = integrate(u, gv);
+  auto i3 = integrate([](auto const& x) { return 1.0; }, gv, 0);
+
+  AMDIS_TEST(i1 == 1.0);
+  AMDIS_TEST(i2 == 1.0);
+  AMDIS_TEST(i3 == 1.0);
+
+  auto quad = Dune::QuadratureRules<double,2>::rule(Dune::GeometryTypes::quadrilateral, 0);
+  auto i4 = integrate([](auto const& x) { return 1.0; }, gv, quad);
+
+  AMDIS_TEST(i4 == 1.0);
+
+  AMDiS::finalize();
+  return 0;
+}