From 541e1161e3a3e3bd3b534ae975d98c690af3ae71 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Ren=C3=A9=20Milk?= <rene.milk@wwu.de>
Date: Fri, 26 Jan 2018 15:15:39 +0100
Subject: [PATCH] [bindings] adjust for cg spaces removal

---
 dune/gdt/CMakeLists.txt                       |   4 +-
 dune/gdt/assembler/system.bindings.hh         |  11 +-
 dune/gdt/discretefunction/default.bindings.hh |   6 +-
 .../gdt/functionals/elliptic-ipdg.bindings.hh |  12 +-
 dune/gdt/functionals/l2.bindings.cc           |  12 +-
 dune/gdt/functionals/l2.bindings.hh           |  12 +-
 .../functionals/l2.bindings/alu_fem_istl.cc   |  24 ----
 .../functionals/l2.bindings/yasp_fem_istl.cc  |  24 ----
 dune/gdt/operators/elliptic-ipdg.bindings.hh  |   8 +-
 dune/gdt/operators/elliptic.bindings.hh       |  55 ++------
 dune/gdt/playground/spaces/restricted.hh      |   1 +
 dune/gdt/projections.bindings.hh              |   9 +-
 dune/gdt/projections/dirichlet.bindings.hh    |  27 +---
 dune/gdt/spaces/cg.bindings.hh                | 132 +++++-------------
 14 files changed, 92 insertions(+), 245 deletions(-)
 delete mode 100644 dune/gdt/functionals/l2.bindings/alu_fem_istl.cc
 delete mode 100644 dune/gdt/functionals/l2.bindings/yasp_fem_istl.cc

diff --git a/dune/gdt/CMakeLists.txt b/dune/gdt/CMakeLists.txt
index 43980b4bc..5b2f95801 100644
--- a/dune/gdt/CMakeLists.txt
+++ b/dune/gdt/CMakeLists.txt
@@ -95,8 +95,8 @@ if(dune-pybindxi_FOUND)
   target_link_libraries(__functionals_elliptic_ipdg __functionals_elliptic_ipdg_helper)
   list(APPEND pybindxi_modules __functionals_elliptic_ipdg)
   dune_pybindxi_add_helper_lib(__functionals_l2_helper EXCLUDE_FROM_ALL
-                               functionals/l2.bindings/alu_fem_istl.cc
-                               functionals/l2.bindings/yasp_fem_istl.cc)
+          functionals/l2.bindings/alu_gdt_istl.cc
+                               functionals/l2.bindings/yasp_gdt_istl.cc)
   dune_pybindxi_add_module(__functionals_l2 EXCLUDE_FROM_ALL functionals/l2.bindings.cc)
   target_link_libraries(__functionals_l2 __functionals_l2_helper)
   list(APPEND pybindxi_modules __functionals_l2)
diff --git a/dune/gdt/assembler/system.bindings.hh b/dune/gdt/assembler/system.bindings.hh
index aba0262aa..869cef1ff 100644
--- a/dune/gdt/assembler/system.bindings.hh
+++ b/dune/gdt/assembler/system.bindings.hh
@@ -327,13 +327,11 @@ public:
   _DUNE_GDT_ASSEMBLER_SYSTEM_BIND_LIB_YASP(_pre, dd_subdomain, part, _s_type, fem, dd_subdomain, _p, 1, 1)
 
 #define DUNE_GDT_ASSEMBLER_SYSTEM_BIND_LIB_ALU_FEM(_pre)                                                               \
-  _DUNE_GDT_ASSEMBLER_SYSTEM_BIND_LIB_ALU_FEM(_pre, cg, 1, 1, 1);                                                      \
   _DUNE_GDT_ASSEMBLER_SYSTEM_BIND_LIB_ALU_FEM(_pre, dg, 1, 1, 1);                                                      \
   _DUNE_GDT_ASSEMBLER_SYSTEM_BIND_LIB_ALU(_pre, dd_subdomain_boundary, part, dg, fem, dd_subdomain, 1, 1, 1);          \
   _DUNE_GDT_ASSEMBLER_SYSTEM_BIND_LIB_ALU(_pre, dd_subdomain_coupling, part, dg, fem, dd_subdomain, 1, 1, 1)
 
 #define DUNE_GDT_ASSEMBLER_SYSTEM_BIND_LIB_YASP_FEM(_pre)                                                              \
-  _DUNE_GDT_ASSEMBLER_SYSTEM_BIND_LIB_YASP_FEM(_pre, cg, 1, 1, 1);                                                     \
   _DUNE_GDT_ASSEMBLER_SYSTEM_BIND_LIB_YASP_FEM(_pre, dg, 1, 1, 1);                                                     \
   _DUNE_GDT_ASSEMBLER_SYSTEM_BIND_LIB_YASP(_pre, dd_subdomain_boundary, part, dg, fem, dd_subdomain, 1, 1, 1);         \
   _DUNE_GDT_ASSEMBLER_SYSTEM_BIND_LIB_YASP(_pre, dd_subdomain_coupling, part, dg, fem, dd_subdomain, 1, 1, 1)
@@ -351,10 +349,13 @@ public:
   _DUNE_GDT_ASSEMBLER_SYSTEM_BIND_LIB_YASP(_pre, leaf, view, _s_type, gdt, leaf, _p, 1, 1);                            \
   _DUNE_GDT_ASSEMBLER_SYSTEM_BIND_LIB_YASP(_pre, level, view, _s_type, gdt, level, _p, 1, 1)
 
-#define DUNE_GDT_ASSEMBLER_SYSTEM_BIND_LIB_ALU_GDT(_pre) _DUNE_GDT_ASSEMBLER_SYSTEM_BIND_LIB_ALU_GDT(_pre, fv, 0, 1, 1)
+#define DUNE_GDT_ASSEMBLER_SYSTEM_BIND_LIB_ALU_GDT(_pre)                                                               \
+  _DUNE_GDT_ASSEMBLER_SYSTEM_BIND_LIB_ALU_GDT(_pre, fv, 0, 1, 1);                                                      \
+  _DUNE_GDT_ASSEMBLER_SYSTEM_BIND_LIB_ALU_GDT(_pre, cg, 1, 1, 1)
 
 #define DUNE_GDT_ASSEMBLER_SYSTEM_BIND_LIB_YASP_GDT(_pre)                                                              \
-  _DUNE_GDT_ASSEMBLER_SYSTEM_BIND_LIB_YASP_GDT(_pre, fv, 0, 1, 1)
+  _DUNE_GDT_ASSEMBLER_SYSTEM_BIND_LIB_YASP_GDT(_pre, fv, 0, 1, 1);                                                     \
+  _DUNE_GDT_ASSEMBLER_SYSTEM_BIND_LIB_YASP_GDT(_pre, cg, 1, 1, 1)
 
 #define DUNE_GDT_ASSEMBLER_SYSTEM_BIND_LIB(_pre)                                                                       \
   DUNE_GDT_ASSEMBLER_SYSTEM_BIND_LIB_ALU_FEM(_pre);                                                                    \
@@ -414,7 +415,7 @@ DUNE_GDT_ASSEMBLER_SYSTEM_BIND_LIB(extern template);
   _DUNE_GDT_ASSEMBLER_SYSTEM_BIND_ALL_GRIDS(_m, level, view, _s_type, gdt, level, _p, 1, 1)
 
 #define DUNE_GDT_ASSEMBLER_SYSTEM_BIND(_m)                                                                             \
-  _DUNE_GDT_ASSEMBLER_SYSTEM_BIND_FEM(_m, cg, 1, 1, 1);                                                                \
+  _DUNE_GDT_ASSEMBLER_SYSTEM_BIND_GDT(_m, cg, 1, 1, 1);                                                                \
   _DUNE_GDT_ASSEMBLER_SYSTEM_BIND_FEM(_m, dg, 1, 1, 1);                                                                \
   _DUNE_GDT_ASSEMBLER_SYSTEM_BIND_ALL_GRIDS(_m, dd_subdomain_boundary, part, dg, fem, dd_subdomain, 1, 1, 1);          \
   _DUNE_GDT_ASSEMBLER_SYSTEM_BIND_ALL_GRIDS(_m, dd_subdomain_coupling, part, dg, fem, dd_subdomain, 1, 1, 1);          \
diff --git a/dune/gdt/discretefunction/default.bindings.hh b/dune/gdt/discretefunction/default.bindings.hh
index 5e25db072..9e17063db 100644
--- a/dune/gdt/discretefunction/default.bindings.hh
+++ b/dune/gdt/discretefunction/default.bindings.hh
@@ -315,8 +315,6 @@ public:
 
 #if HAVE_DUNE_FEM
 #define _DUNE_GDT_DISCRETEFUNCTION_DEFAULT_BIND_FEM(_m)                                                                \
-  _DUNE_GDT_DISCRETEFUNCTION_DEFAULT_BIND_ALL_GRIDS(_m, leaf, cg, fem, 1, 1, 1);                                       \
-  _DUNE_GDT_DISCRETEFUNCTION_DEFAULT_BIND_ALL_GRIDS(_m, level, cg, fem, 1, 1, 1);                                      \
   _DUNE_GDT_DISCRETEFUNCTION_DEFAULT_BIND_ALL_GRIDS(_m, dd_subdomain, cg, fem, 1, 1, 1);                               \
   _DUNE_GDT_DISCRETEFUNCTION_DEFAULT_BIND_ALL_GRIDS(_m, dd_subdomain, block_cg, fem, 1, 1, 1);                         \
   _DUNE_GDT_DISCRETEFUNCTION_DEFAULT_BIND_ALL_GRIDS(_m, leaf, dg, fem, 1, 1, 1);                                       \
@@ -329,7 +327,9 @@ public:
 
 #define _DUNE_GDT_DISCRETEFUNCTION_DEFAULT_BIND_GDT(_m)                                                                \
   _DUNE_GDT_DISCRETEFUNCTION_DEFAULT_BIND_ALL_GRIDS(_m, leaf, fv, gdt, 0, 1, 1);                                       \
-  _DUNE_GDT_DISCRETEFUNCTION_DEFAULT_BIND_ALL_GRIDS(_m, level, fv, gdt, 0, 1, 1)
+  _DUNE_GDT_DISCRETEFUNCTION_DEFAULT_BIND_ALL_GRIDS(_m, level, fv, gdt, 0, 1, 1);                                      \
+  _DUNE_GDT_DISCRETEFUNCTION_DEFAULT_BIND_ALL_GRIDS(_m, leaf, cg, gdt, 1, 1, 1);                                       \
+  _DUNE_GDT_DISCRETEFUNCTION_DEFAULT_BIND_ALL_GRIDS(_m, level, cg, gdt, 1, 1, 1);
 
 #if HAVE_DUNE_PDELAB
 #define _DUNE_GDT_DISCRETEFUNCTION_DEFAULT_BIND_PDELAB(_m)                                                             \
diff --git a/dune/gdt/functionals/elliptic-ipdg.bindings.hh b/dune/gdt/functionals/elliptic-ipdg.bindings.hh
index 6c8e5645c..160766b07 100644
--- a/dune/gdt/functionals/elliptic-ipdg.bindings.hh
+++ b/dune/gdt/functionals/elliptic-ipdg.bindings.hh
@@ -537,17 +537,17 @@ public:
       _prefix, 2, YASP_2D_EQUIDISTANT_OFFSET, _layer, _g_backend, _s_type, _s_backend, _p, _la)
 
 // alu_fem__istl.cc
-#if HAVE_DUNE_ALUGRID && HAVE_DUNE_FEM && HAVE_DUNE_ISTL
-DUNE_GDT_FUNCTIONALS_ELLIPTIC_IPDG_BIND_LIB_ALU(extern template, leaf, part, cg, fem, 1, istl_dense);
-DUNE_GDT_FUNCTIONALS_ELLIPTIC_IPDG_BIND_LIB_ALU(extern template, level, part, cg, fem, 1, istl_dense);
 DUNE_GDT_FUNCTIONALS_ELLIPTIC_IPDG_BIND_LIB_ALU(extern template, dd_subdomain, part, cg, fem, 1, istl_dense);
+#if HAVE_DUNE_ALUGRID && HAVE_DUNE_ISTL
+DUNE_GDT_FUNCTIONALS_ELLIPTIC_IPDG_BIND_LIB_ALU(extern template, leaf, view, cg, gdt, 1, istl_dense);
+DUNE_GDT_FUNCTIONALS_ELLIPTIC_IPDG_BIND_LIB_ALU(extern template, level, view, cg, gdt, 1, istl_dense);
 #endif
 
 // yasp_fem_istl.cc
-#if HAVE_DUNE_FEM && HAVE_DUNE_ISTL
-DUNE_GDT_FUNCTIONALS_ELLIPTIC_IPDG_BIND_LIB_YASP(extern template, leaf, part, cg, fem, 1, istl_dense);
-DUNE_GDT_FUNCTIONALS_ELLIPTIC_IPDG_BIND_LIB_YASP(extern template, level, part, cg, fem, 1, istl_dense);
 DUNE_GDT_FUNCTIONALS_ELLIPTIC_IPDG_BIND_LIB_YASP(extern template, dd_subdomain, part, cg, fem, 1, istl_dense);
+#if HAVE_DUNE_ISTL
+DUNE_GDT_FUNCTIONALS_ELLIPTIC_IPDG_BIND_LIB_YASP(extern template, leaf, view, cg, gdt, 1, istl_dense);
+DUNE_GDT_FUNCTIONALS_ELLIPTIC_IPDG_BIND_LIB_YASP(extern template, level, view, cg, gdt, 1, istl_dense);
 #endif
 
 // end: this is what we need for the lib
diff --git a/dune/gdt/functionals/l2.bindings.cc b/dune/gdt/functionals/l2.bindings.cc
index 4ac20821f..81c09cf85 100644
--- a/dune/gdt/functionals/l2.bindings.cc
+++ b/dune/gdt/functionals/l2.bindings.cc
@@ -42,23 +42,27 @@ PYBIND11_PLUGIN(__functionals_l2)
 
 // alu_fem_istl.cc
 #if HAVE_DUNE_ALUGRID && HAVE_DUNE_FEM && HAVE_DUNE_ISTL
-  DUNE_GDT_FUNCTIONALS_L2_BIND_ALU(m, leaf, part, cg, fem, 1, istl_sparse);
-  DUNE_GDT_FUNCTIONALS_L2_BIND_ALU(m, level, part, cg, fem, 1, istl_sparse);
   DUNE_GDT_FUNCTIONALS_L2_BIND_ALU(m, dd_subdomain, part, cg, fem, 1, istl_sparse);
   DUNE_GDT_FUNCTIONALS_L2_BIND_ALU(m, leaf, part, dg, fem, 1, istl_sparse);
   DUNE_GDT_FUNCTIONALS_L2_BIND_ALU(m, level, part, dg, fem, 1, istl_sparse);
   DUNE_GDT_FUNCTIONALS_L2_BIND_ALU(m, dd_subdomain, part, dg, fem, 1, istl_sparse);
 #endif
+#if HAVE_DUNE_ALUGRID && HAVE_DUNE_ISTL
+  DUNE_GDT_FUNCTIONALS_L2_BIND_ALU(m, leaf, view, cg, gdt, 1, istl_sparse);
+  DUNE_GDT_FUNCTIONALS_L2_BIND_ALU(m, level, view, cg, gdt, 1, istl_sparse);
+#endif
 
 // yasp_fem_istl.cc
 #if HAVE_DUNE_FEM && HAVE_DUNE_ISTL
-  DUNE_GDT_FUNCTIONALS_L2_BIND_YASP(m, leaf, part, cg, fem, 1, istl_sparse);
-  DUNE_GDT_FUNCTIONALS_L2_BIND_YASP(m, level, part, cg, fem, 1, istl_sparse);
   DUNE_GDT_FUNCTIONALS_L2_BIND_YASP(m, dd_subdomain, part, cg, fem, 1, istl_sparse);
   DUNE_GDT_FUNCTIONALS_L2_BIND_YASP(m, leaf, part, dg, fem, 1, istl_sparse);
   DUNE_GDT_FUNCTIONALS_L2_BIND_YASP(m, level, part, dg, fem, 1, istl_sparse);
   DUNE_GDT_FUNCTIONALS_L2_BIND_YASP(m, dd_subdomain, part, dg, fem, 1, istl_sparse);
 #endif
+#if HAVE_DUNE_ISTL
+  DUNE_GDT_FUNCTIONALS_L2_BIND_YASP(m, leaf, view, cg, gdt, 1, istl_sparse);
+  DUNE_GDT_FUNCTIONALS_L2_BIND_YASP(m, level, view, cg, gdt, 1, istl_sparse);
+#endif
 
   m.def("_init_mpi",
         [](const std::vector<std::string>& args) {
diff --git a/dune/gdt/functionals/l2.bindings.hh b/dune/gdt/functionals/l2.bindings.hh
index a6f786f12..12c76b37b 100644
--- a/dune/gdt/functionals/l2.bindings.hh
+++ b/dune/gdt/functionals/l2.bindings.hh
@@ -234,17 +234,17 @@ public:
       _prefix, 2, YASP_2D_EQUIDISTANT_OFFSET, _layer, _g_backend, _s_type, _s_backend, _p, _la)
 
 // alu_fem_istl.cc
-#if HAVE_DUNE_ALUGRID && HAVE_DUNE_FEM && HAVE_DUNE_ISTL
-DUNE_GDT_FUNCTIONALS_L2_BIND_LIB_ALU(extern template, leaf, part, cg, fem, 1, istl_sparse);
-DUNE_GDT_FUNCTIONALS_L2_BIND_LIB_ALU(extern template, level, part, cg, fem, 1, istl_sparse);
 DUNE_GDT_FUNCTIONALS_L2_BIND_LIB_ALU(extern template, dd_subdomain, part, cg, fem, 1, istl_sparse);
+#if HAVE_DUNE_ALUGRID && HAVE_DUNE_ISTL
+DUNE_GDT_FUNCTIONALS_L2_BIND_LIB_ALU(extern template, leaf, part, cg, gdt, 1, istl_sparse);
+DUNE_GDT_FUNCTIONALS_L2_BIND_LIB_ALU(extern template, level, part, cg, gdt, 1, istl_sparse);
 #endif
 
 // yasp_fem_istl.cc
-#if HAVE_DUNE_FEM && HAVE_DUNE_ISTL
-DUNE_GDT_FUNCTIONALS_L2_BIND_LIB_YASP(extern template, leaf, part, cg, fem, 1, istl_sparse);
-DUNE_GDT_FUNCTIONALS_L2_BIND_LIB_YASP(extern template, level, part, cg, fem, 1, istl_sparse);
 DUNE_GDT_FUNCTIONALS_L2_BIND_LIB_YASP(extern template, dd_subdomain, part, cg, fem, 1, istl_sparse);
+#if HAVE_DUNE_ISTL
+DUNE_GDT_FUNCTIONALS_L2_BIND_LIB_YASP(extern template, leaf, part, cg, gdt, 1, istl_sparse);
+DUNE_GDT_FUNCTIONALS_L2_BIND_LIB_YASP(extern template, level, part, cg, gdt, 1, istl_sparse);
 #endif
 
 // end: this is what we need for the lib
diff --git a/dune/gdt/functionals/l2.bindings/alu_fem_istl.cc b/dune/gdt/functionals/l2.bindings/alu_fem_istl.cc
deleted file mode 100644
index d949c4799..000000000
--- a/dune/gdt/functionals/l2.bindings/alu_fem_istl.cc
+++ /dev/null
@@ -1,24 +0,0 @@
-// This file is part of the dune-gdt project:
-//   https://github.com/dune-community/dune-gdt
-// Copyright 2010-2018 dune-gdt developers and contributors. All rights reserved.
-// License: Dual licensed as BSD 2-Clause License (http://opensource.org/licenses/BSD-2-Clause)
-//      or  GPL-2.0+ (http://opensource.org/licenses/gpl-license)
-//          with "runtime exception" (http://www.dune-project.org/license.html)
-// Authors:
-//   Felix Schindler (2017)
-
-#include "config.h"
-
-#if HAVE_DUNE_PYBINDXI
-
-#include <dune/gdt/functionals/l2.bindings.hh>
-
-
-#if HAVE_DUNE_ALUGRID && HAVE_DUNE_FEM && HAVE_DUNE_ISTL
-DUNE_GDT_FUNCTIONALS_L2_BIND_LIB_ALU(template, leaf, part, cg, fem, 1, istl_sparse);
-DUNE_GDT_FUNCTIONALS_L2_BIND_LIB_ALU(template, level, part, cg, fem, 1, istl_sparse);
-DUNE_GDT_FUNCTIONALS_L2_BIND_LIB_ALU(template, dd_subdomain, part, cg, fem, 1, istl_sparse);
-#endif
-
-
-#endif // HAVE_DUNE_PYBINDXI
diff --git a/dune/gdt/functionals/l2.bindings/yasp_fem_istl.cc b/dune/gdt/functionals/l2.bindings/yasp_fem_istl.cc
deleted file mode 100644
index f90afb8df..000000000
--- a/dune/gdt/functionals/l2.bindings/yasp_fem_istl.cc
+++ /dev/null
@@ -1,24 +0,0 @@
-// This file is part of the dune-gdt project:
-//   https://github.com/dune-community/dune-gdt
-// Copyright 2010-2018 dune-gdt developers and contributors. All rights reserved.
-// License: Dual licensed as BSD 2-Clause License (http://opensource.org/licenses/BSD-2-Clause)
-//      or  GPL-2.0+ (http://opensource.org/licenses/gpl-license)
-//          with "runtime exception" (http://www.dune-project.org/license.html)
-// Authors:
-//   Felix Schindler (2017)
-
-#include "config.h"
-
-#if HAVE_DUNE_PYBINDXI
-
-#include <dune/gdt/functionals/l2.bindings.hh>
-
-
-#if HAVE_DUNE_FEM && HAVE_DUNE_ISTL
-DUNE_GDT_FUNCTIONALS_L2_BIND_LIB_YASP(template, leaf, part, cg, fem, 1, istl_sparse);
-DUNE_GDT_FUNCTIONALS_L2_BIND_LIB_YASP(template, level, part, cg, fem, 1, istl_sparse);
-DUNE_GDT_FUNCTIONALS_L2_BIND_LIB_YASP(template, dd_subdomain, part, cg, fem, 1, istl_sparse);
-#endif
-
-
-#endif // HAVE_DUNE_PYBINDXI
diff --git a/dune/gdt/operators/elliptic-ipdg.bindings.hh b/dune/gdt/operators/elliptic-ipdg.bindings.hh
index 6406507e1..e9d37780c 100644
--- a/dune/gdt/operators/elliptic-ipdg.bindings.hh
+++ b/dune/gdt/operators/elliptic-ipdg.bindings.hh
@@ -421,16 +421,16 @@ public:
 
 // alu_fem__istl.cc
 #if HAVE_DUNE_ALUGRID && HAVE_DUNE_FEM && HAVE_DUNE_ISTL
-DUNE_GDT_OPERATORS_ELLIPTIC_IPDG_BIND_LIB_ALU(extern template, leaf, part, cg, fem, 1, istl_sparse);
-DUNE_GDT_OPERATORS_ELLIPTIC_IPDG_BIND_LIB_ALU(extern template, level, part, cg, fem, 1, istl_sparse);
 DUNE_GDT_OPERATORS_ELLIPTIC_IPDG_BIND_LIB_ALU(extern template, dd_subdomain, part, cg, fem, 1, istl_sparse);
+DUNE_GDT_OPERATORS_ELLIPTIC_IPDG_BIND_LIB_ALU(extern template, leaf, view, cg, gdt, 1, istl_sparse);
+DUNE_GDT_OPERATORS_ELLIPTIC_IPDG_BIND_LIB_ALU(extern template, level, view, cg, gdt, 1, istl_sparse);
 #endif
 
 // yasp_fem_istl.cc
 #if HAVE_DUNE_FEM && HAVE_DUNE_ISTL
-DUNE_GDT_OPERATORS_ELLIPTIC_IPDG_BIND_LIB_YASP(extern template, leaf, part, cg, fem, 1, istl_sparse);
-DUNE_GDT_OPERATORS_ELLIPTIC_IPDG_BIND_LIB_YASP(extern template, level, part, cg, fem, 1, istl_sparse);
 DUNE_GDT_OPERATORS_ELLIPTIC_IPDG_BIND_LIB_YASP(extern template, dd_subdomain, part, cg, fem, 1, istl_sparse);
+DUNE_GDT_OPERATORS_ELLIPTIC_IPDG_BIND_LIB_YASP(extern template, leaf, view, cg, gdt, 1, istl_sparse);
+DUNE_GDT_OPERATORS_ELLIPTIC_IPDG_BIND_LIB_YASP(extern template, level, view, cg, gdt, 1, istl_sparse);
 #endif
 
 // end: this is what we need for the lib
diff --git a/dune/gdt/operators/elliptic.bindings.hh b/dune/gdt/operators/elliptic.bindings.hh
index d46e0d13c..fcfabe37c 100644
--- a/dune/gdt/operators/elliptic.bindings.hh
+++ b/dune/gdt/operators/elliptic.bindings.hh
@@ -300,63 +300,30 @@ public:
   _DUNE_GDT_OPERATORS_ELLIPTIC_BIND_LIB_UG(_prefix, _layer, _g_backend, _s_type, _s_backend, _p, _la);                 \
   _DUNE_GDT_OPERATORS_ELLIPTIC_BIND_LIB_YASP(_prefix, _layer, _g_backend, _s_type, _s_backend, _p, _la)
 
-#if HAVE_DUNE_FEM
-#define _DUNE_GDT_OPERATORS_ELLIPTIC_BIND_LIB_FEM(_prefix, _la)                                                        \
-  _DUNE_GDT_OPERATORS_ELLIPTIC_BIND_LIB_GRIDS(_prefix, leaf, part, cg, fem, 1, _la);                                   \
-  _DUNE_GDT_OPERATORS_ELLIPTIC_BIND_LIB_GRIDS(_prefix, level, part, cg, fem, 1, _la);                                  \
-  _DUNE_GDT_OPERATORS_ELLIPTIC_BIND_LIB_GRIDS(_prefix, dd_subdomain, part, cg, fem, 1, _la);                           \
+
+#define _DUNE_GDT_OPERATORS_ELLIPTIC_BIND_LIB_DEFAULT(_prefix, _la)                                                    \
+  _DUNE_GDT_OPERATORS_ELLIPTIC_BIND_LIB_GRIDS(_prefix, leaf, part, cg, gdt, 1, _la);                                   \
+  _DUNE_GDT_OPERATORS_ELLIPTIC_BIND_LIB_GRIDS(_prefix, level, part, cg, gdt, 1, _la);                                  \
+  _DUNE_GDT_OPERATORS_ELLIPTIC_BIND_LIB_GRIDS(_prefix, dd_subdomain, part, cg, gdt, 1, _la);                           \
   _DUNE_GDT_OPERATORS_ELLIPTIC_BIND_LIB_GRIDS(_prefix, leaf, part, dg, fem, 1, _la);                                   \
   _DUNE_GDT_OPERATORS_ELLIPTIC_BIND_LIB_GRIDS(_prefix, level, part, dg, fem, 1, _la);                                  \
   _DUNE_GDT_OPERATORS_ELLIPTIC_BIND_LIB_GRIDS(_prefix, dd_subdomain, part, dg, fem, 1, _la)
 #define DUNE_GDT_OPERATORS_ELLIPTIC_BIND_LIB_FEM_COMMON(_prefix)
-//_DUNE_GDT_OPERATORS_ELLIPTIC_BIND_LIB_FEM(_prefix, common_dense)
+//_DUNE_GDT_OPERATORS_ELLIPTIC_BIND_LIB_DEFAULT(_prefix, common_dense)
 //#if HAVE_EIGEN
 //#define DUNE_GDT_OPERATORS_ELLIPTIC_BIND_LIB_FEM_EIGEN(_prefix)                                                               \
-//  _DUNE_GDT_OPERATORS_ELLIPTIC_BIND_LIB_FEM(_prefix, eigen_dense);                                                            \
-//  _DUNE_GDT_OPERATORS_ELLIPTIC_BIND_LIB_FEM(_prefix, eigen_sparse)
+//  _DUNE_GDT_OPERATORS_ELLIPTIC_BIND_LIB_DEFAULT(_prefix, eigen_dense);                                                            \
+//  _DUNE_GDT_OPERATORS_ELLIPTIC_BIND_LIB_DEFAULT(_prefix, eigen_sparse)
 //#else
 #define DUNE_GDT_OPERATORS_ELLIPTIC_BIND_LIB_FEM_EIGEN(_prefix)
 //#endif
 #if HAVE_DUNE_ISTL
 #define DUNE_GDT_OPERATORS_ELLIPTIC_BIND_LIB_FEM_ISTL(_prefix)                                                         \
-  _DUNE_GDT_OPERATORS_ELLIPTIC_BIND_LIB_FEM(_prefix, istl_sparse)
-#else
-#define DUNE_GDT_OPERATORS_ELLIPTIC_BIND_LIB_FEM_ISTL(_prefix)
-#endif
+  _DUNE_GDT_OPERATORS_ELLIPTIC_BIND_LIB_DEFAULT(_prefix, istl_sparse)
 #else
-#define DUNE_GDT_OPERATORS_ELLIPTIC_BIND_LIB_FEM_COMMON(_prefix)
-#define DUNE_GDT_OPERATORS_ELLIPTIC_BIND_LIB_FEM_EIGEN(_prefix)
 #define DUNE_GDT_OPERATORS_ELLIPTIC_BIND_LIB_FEM_ISTL(_prefix)
 #endif
 
-//#if HAVE_DUNE_PDELAB
-//#define _DUNE_GDT_OPERATORS_ELLIPTIC_BIND_LIB_PDELAB(_prefix, _la)                                                            \
-//  _DUNE_GDT_OPERATORS_ELLIPTIC_BIND_LIB_ALBERTA(_prefix, leaf, view, cg, pdelab, 1, _la);                                     \
-//  _DUNE_GDT_OPERATORS_ELLIPTIC_BIND_LIB_ALU(_prefix, leaf, view, cg, pdelab, 1, _la);                                         \
-//  _DUNE_GDT_OPERATORS_ELLIPTIC_BIND_LIB_YASP(_prefix, leaf, view, cg, pdelab, 1, _la);                                        \
-//  _DUNE_GDT_OPERATORS_ELLIPTIC_BIND_LIB_ALBERTA(_prefix, level, view, cg, pdelab, 1, _la);                                    \
-//  _DUNE_GDT_OPERATORS_ELLIPTIC_BIND_LIB_ALU(_prefix, level, view, cg, pdelab, 1, _la);                                        \
-//  _DUNE_GDT_OPERATORS_ELLIPTIC_BIND_LIB_YASP(_prefix, level, view, cg, pdelab, 1, _la)
-//#define DUNE_GDT_OPERATORS_ELLIPTIC_BIND_LIB_PDELAB_COMMON(_prefix)
-//_DUNE_GDT_OPERATORS_ELLIPTIC_BIND_LIB_PDELAB(_prefix, common_dense)
-//#if HAVE_EIGEN
-//#define DUNE_GDT_OPERATORS_ELLIPTIC_BIND_LIB_PDELAB_EIGEN(_prefix)                                                            \
-//  _DUNE_GDT_OPERATORS_ELLIPTIC_BIND_LIB_PDELAB(_prefix, eigen_dense);                                                         \
-//  _DUNE_GDT_OPERATORS_ELLIPTIC_BIND_LIB_PDELAB(_prefix, eigen_sparse)
-//#else
-//#define DUNE_GDT_OPERATORS_ELLIPTIC_BIND_LIB_PDELAB_EIGEN(_prefix)
-//#endif
-//#if HAVE_DUNE_ISTL
-//#define DUNE_GDT_OPERATORS_ELLIPTIC_BIND_LIB_PDELAB_ISTL(_prefix)
-//_DUNE_GDT_OPERATORS_ELLIPTIC_BIND_LIB_PDELAB(_prefix, istl_sparse)
-//#else
-//#define DUNE_GDT_OPERATORS_ELLIPTIC_BIND_LIB_PDELAB_ISTL(_prefix)
-//#endif
-//#else
-#define DUNE_GDT_OPERATORS_ELLIPTIC_BIND_LIB_PDELAB_COMMON(_prefix)
-#define DUNE_GDT_OPERATORS_ELLIPTIC_BIND_LIB_PDELAB_EIGEN(_prefix)
-#define DUNE_GDT_OPERATORS_ELLIPTIC_BIND_LIB_PDELAB_ISTL(_prefix)
-//#endif
 
 // fem_istl.cc
 DUNE_GDT_OPERATORS_ELLIPTIC_BIND_LIB_FEM_ISTL(extern template);
@@ -494,9 +461,9 @@ DUNE_GDT_OPERATORS_ELLIPTIC_BIND_LIB_FEM_ISTL(extern template);
 
 #if HAVE_DUNE_FEM
 #define _DUNE_GDT_OPERATORS_ELLIPTIC_BIND_FEM(_m, _la)                                                                 \
-  _DUNE_GDT_OPERATORS_ELLIPTIC_BIND_GRIDS(_m, leaf, part, cg, fem, 1, _la);                                            \
-  _DUNE_GDT_OPERATORS_ELLIPTIC_BIND_GRIDS(_m, level, part, cg, fem, 1, _la);                                           \
   _DUNE_GDT_OPERATORS_ELLIPTIC_BIND_GRIDS(_m, dd_subdomain, part, cg, fem, 1, _la);                                    \
+  _DUNE_GDT_OPERATORS_ELLIPTIC_BIND_GRIDS(_m, leaf, view, cg, gdt, 1, _la);                                            \
+  _DUNE_GDT_OPERATORS_ELLIPTIC_BIND_GRIDS(_m, level, view, cg, gdt, 1, _la);                                           \
   _DUNE_GDT_OPERATORS_ELLIPTIC_BIND_GRIDS(_m, leaf, part, dg, fem, 1, _la);                                            \
   _DUNE_GDT_OPERATORS_ELLIPTIC_BIND_GRIDS(_m, level, part, dg, fem, 1, _la);                                           \
   _DUNE_GDT_OPERATORS_ELLIPTIC_BIND_GRIDS(_m, dd_subdomain, part, dg, fem, 1, _la)
diff --git a/dune/gdt/playground/spaces/restricted.hh b/dune/gdt/playground/spaces/restricted.hh
index ece5929f9..002dc0306 100644
--- a/dune/gdt/playground/spaces/restricted.hh
+++ b/dune/gdt/playground/spaces/restricted.hh
@@ -69,6 +69,7 @@ public:
   typedef RestrictionGridLayer GridLayerType;
   typedef typename UnrestrictedSpace::RangeFieldType RangeFieldType;
   static const XT::Grid::Backends layer_backend = layer_backend_helper<>::value;
+  static constexpr const GDT::Backends backend_type{UnrestrictedSpace::backend_type};
 }; // class RestrictedSpaceTraits
 
 
diff --git a/dune/gdt/projections.bindings.hh b/dune/gdt/projections.bindings.hh
index ec28522ea..58ceafede 100644
--- a/dune/gdt/projections.bindings.hh
+++ b/dune/gdt/projections.bindings.hh
@@ -106,16 +106,11 @@ public:
 
 #define _DUNE_GDT_PROJECTIONS_BIND_DEFAULT(_m, _la)                                                                    \
   _DUNE_GDT_PROJECTIONS_BIND_ALL_GRIDS(_m, leaf, gdt, fv, 0, _la);                                                     \
+  _DUNE_GDT_PROJECTIONS_BIND_ALL_GRIDS(_m, dd_subdomain, gdt, cg, 1, _la);                                             \
   _DUNE_GDT_PROJECTIONS_BIND_ALL_GRIDS(_m, level, gdt, fv, 0, _la)
 
 #if HAVE_DUNE_FEM
-#define _DUNE_GDT_PROJECTIONS_BIND_FEM(_m, _la)                                                                        \
-  _DUNE_GDT_PROJECTIONS_BIND_ALL_GRIDS(_m, leaf, fem, cg, 1, _la);                                                     \
-  _DUNE_GDT_PROJECTIONS_BIND_ALL_GRIDS(_m, level, fem, cg, 1, _la);                                                    \
-  _DUNE_GDT_PROJECTIONS_BIND_ALL_GRIDS(_m, dd_subdomain, fem, cg, 1, _la);                                             \
-  _DUNE_GDT_PROJECTIONS_BIND_ALL_GRIDS(_m, leaf, fem, dg, 1, _la);                                                     \
-  _DUNE_GDT_PROJECTIONS_BIND_ALL_GRIDS(_m, level, fem, dg, 1, _la);                                                    \
-  _DUNE_GDT_PROJECTIONS_BIND_ALL_GRIDS(_m, dd_subdomain, fem, dg, 1, _la)
+#define _DUNE_GDT_PROJECTIONS_BIND_FEM(_m, _la) _DUNE_GDT_PROJECTIONS_BIND_ALL_GRIDS(_m, dd_subdomain, fem, dg, 1, _la)
 #else
 #define _DUNE_GDT_PROJECTIONS_BIND_FEM(_m, _la)
 #endif
diff --git a/dune/gdt/projections/dirichlet.bindings.hh b/dune/gdt/projections/dirichlet.bindings.hh
index 86c03e373..38dba2bd2 100644
--- a/dune/gdt/projections/dirichlet.bindings.hh
+++ b/dune/gdt/projections/dirichlet.bindings.hh
@@ -118,29 +118,14 @@ public:
   _DUNE_GDT_PROJECTIONS_DIRICHLET_BIND(_m, YASP_1D_EQUIDISTANT_OFFSET, _layer, _backend, 1, 1, _la);                   \
   _DUNE_GDT_PROJECTIONS_DIRICHLET_BIND(_m, YASP_2D_EQUIDISTANT_OFFSET, _layer, _backend, 1, 1, _la)
 
-#if HAVE_DUNE_FEM
-#define _DUNE_GDT_PROJECTIONS_DIRICHLET_BIND_FEM(_m, _la)                                                              \
-  _DUNE_GDT_PROJECTIONS_DIRICHLET_BIND_ALBERTA(_m, leaf, fem, _la);                                                    \
-  _DUNE_GDT_PROJECTIONS_DIRICHLET_BIND_ALU(_m, leaf, fem, _la);                                                        \
-  _DUNE_GDT_PROJECTIONS_DIRICHLET_BIND_UG(_m, leaf, fem, _la);                                                         \
-  _DUNE_GDT_PROJECTIONS_DIRICHLET_BIND_YASP(_m, leaf, fem, _la)
-#else
-#define _DUNE_GDT_PROJECTIONS_DIRICHLET_BIND_FEM(_m, _la)
-#endif
+#define _DUNE_GDT_PROJECTIONS_DIRICHLET_BIND_GDT(_m, _la)                                                              \
+  _DUNE_GDT_PROJECTIONS_DIRICHLET_BIND_ALBERTA(_m, leaf, gdt, _la);                                                    \
+  _DUNE_GDT_PROJECTIONS_DIRICHLET_BIND_ALU(_m, leaf, gdt, _la);                                                        \
+  _DUNE_GDT_PROJECTIONS_DIRICHLET_BIND_UG(_m, leaf, gdt, _la);                                                         \
+  _DUNE_GDT_PROJECTIONS_DIRICHLET_BIND_YASP(_m, leaf, gdt, _la)
 
-//#if HAVE_DUNE_PDELAB
-//#define _DUNE_GDT_PROJECTIONS_DIRICHLET_BIND_PDELAB(_m, _la)                                                         \
-//  _DUNE_GDT_PROJECTIONS_DIRICHLET_BIND_ALBERTA(_m, leaf, pdelab, _la);                                               \
-//  _DUNE_GDT_PROJECTIONS_DIRICHLET_BIND_ALU(_m, leaf, pdelab, _la);                                                   \
-//  _DUNE_GDT_PROJECTIONS_DIRICHLET_BIND_YASP(_m, leaf, pdelab, _la)
-////  _DUNE_GDT_PROJECTIONS_DIRICHLET_BIND_UG(_m, leaf, pdelab, _la); // <- does not work
-//#else
-#define _DUNE_GDT_PROJECTIONS_DIRICHLET_BIND_PDELAB(_m, _la)
-//#endif
 
-#define _DUNE_GDT_PROJECTIONS_DIRICHLET_BIND_BACKENDS(_m, _la)                                                         \
-  _DUNE_GDT_PROJECTIONS_DIRICHLET_BIND_FEM(_m, _la);                                                                   \
-  _DUNE_GDT_PROJECTIONS_DIRICHLET_BIND_PDELAB(_m, _la)
+#define _DUNE_GDT_PROJECTIONS_DIRICHLET_BIND_BACKENDS(_m, _la) _DUNE_GDT_PROJECTIONS_DIRICHLET_BIND_GDT(_m, _la);
 
 #define _DUNE_GDT_PROJECTIONS_DIRICHLET_BIND_COMMON(_m)
 //_DUNE_GDT_PROJECTIONS_DIRICHLET_BIND_BACKENDS(_m, common_dense)
diff --git a/dune/gdt/spaces/cg.bindings.hh b/dune/gdt/spaces/cg.bindings.hh
index a072fdd21..1eae6a62b 100644
--- a/dune/gdt/spaces/cg.bindings.hh
+++ b/dune/gdt/spaces/cg.bindings.hh
@@ -21,124 +21,66 @@
 
 // * fem
 #if HAVE_DUNE_FEM
-#define _DUNE_GDT_SPACES_CG_BIND_FEM(_m, _GRID, _layer, _r, _rC)                                                       \
+#define _DUNE_GDT_SPACES_CG_BIND_GDT(_m, _GRID, _layer, _r, _rC)                                                       \
   Dune::GDT::bindings::SpaceInterface<Dune::GDT::CgSpaceProvider<_GRID,                                                \
                                                                  Dune::XT::Grid::Layers::_layer,                       \
-                                                                 Dune::GDT::Backends::fem,                             \
+                                                                 Dune::GDT::Backends::gdt,                             \
                                                                  1,                                                    \
                                                                  double,                                               \
                                                                  _r,                                                   \
                                                                  _rC>>::bind(_m)
 
 //#if HAVE_ALBERTA
-//#define _DUNE_GDT_SPACES_CG_BIND_FEM_ALBERTA_LAYER(_m, _layer)                                                       \
-//  _DUNE_GDT_SPACES_CG_BIND_FEM(_m, ALBERTA_2D, _layer, 1, 1)
-//#define _DUNE_GDT_SPACES_CG_BIND_FEM_ALBERTA(_m)                                                                     \
-//  _DUNE_GDT_SPACES_CG_BIND_FEM_ALBERTA_LAYER(_m, dd_subdomain);                                                      \
-//  _DUNE_GDT_SPACES_CG_BIND_FEM_ALBERTA_LAYER(_m, leaf);                                                              \
-//  _DUNE_GDT_SPACES_CG_BIND_FEM_ALBERTA_LAYER(_m, level)
+//#define _DUNE_GDT_SPACES_CG_BIND_GDT_ALBERTA_LAYER(_m, _layer)                                                       \
+//  _DUNE_GDT_SPACES_CG_BIND_GDT(_m, ALBERTA_2D, _layer, 1, 1)
+//#define _DUNE_GDT_SPACES_CG_BIND_GDT_ALBERTA(_m)                                                                     \
+//  _DUNE_GDT_SPACES_CG_BIND_GDT_ALBERTA_LAYER(_m, dd_subdomain);                                                      \
+//  _DUNE_GDT_SPACES_CG_BIND_GDT_ALBERTA_LAYER(_m, leaf);                                                              \
+//  _DUNE_GDT_SPACES_CG_BIND_GDT_ALBERTA_LAYER(_m, level)
 //#else
-#define _DUNE_GDT_SPACES_CG_BIND_FEM_ALBERTA(_m)
+#define _DUNE_GDT_SPACES_CG_BIND_GDT_ALBERTA(_m)
 //#endif
 
 #if HAVE_DUNE_ALUGRID
-#define _DUNE_GDT_SPACES_CG_BIND_FEM_ALU_LAYER(_m, _layer)                                                             \
-  _DUNE_GDT_SPACES_CG_BIND_FEM(_m, ALU_2D_SIMPLEX_CONFORMING, _layer, 1, 1)
-#define _DUNE_GDT_SPACES_CG_BIND_FEM_ALU(_m)                                                                           \
-  _DUNE_GDT_SPACES_CG_BIND_FEM_ALU_LAYER(_m, dd_subdomain);                                                            \
-  _DUNE_GDT_SPACES_CG_BIND_FEM_ALU_LAYER(_m, leaf);                                                                    \
-  _DUNE_GDT_SPACES_CG_BIND_FEM_ALU_LAYER(_m, level)
+#define _DUNE_GDT_SPACES_CG_BIND_GDT_ALU_LAYER(_m, _layer)                                                             \
+  _DUNE_GDT_SPACES_CG_BIND_GDT(_m, ALU_2D_SIMPLEX_CONFORMING, _layer, 1, 1)
+#define _DUNE_GDT_SPACES_CG_BIND_GDT_ALU(_m)                                                                           \
+  _DUNE_GDT_SPACES_CG_BIND_GDT_ALU_LAYER(_m, dd_subdomain);                                                            \
+  _DUNE_GDT_SPACES_CG_BIND_GDT_ALU_LAYER(_m, leaf);                                                                    \
+  _DUNE_GDT_SPACES_CG_BIND_GDT_ALU_LAYER(_m, level)
 #else
-#define _DUNE_GDT_SPACES_CG_BIND_FEM_ALU(_m)
+#define _DUNE_GDT_SPACES_CG_BIND_GDT_ALU(_m)
 #endif
 
 //#if HAVE_DUNE_UGGRID || HAVE_UG
-//#define _DUNE_GDT_SPACES_CG_BIND_FEM_UG_LAYER(_m, _layer) _DUNE_GDT_SPACES_CG_BIND_FEM(_m, UG_2D, _layer, 1, 1)
-//#define _DUNE_GDT_SPACES_CG_BIND_FEM_UG(_m)                                                                          \
-//  _DUNE_GDT_SPACES_CG_BIND_FEM_UG_LAYER(_m, dd_subdomain);                                                           \
-//  _DUNE_GDT_SPACES_CG_BIND_FEM_UG_LAYER(_m, leaf);                                                                   \
-//  _DUNE_GDT_SPACES_CG_BIND_FEM_UG_LAYER(_m, level)
+//#define _DUNE_GDT_SPACES_CG_BIND_GDT_UG_LAYER(_m, _layer) _DUNE_GDT_SPACES_CG_BIND_GDT(_m, UG_2D, _layer, 1, 1)
+//#define _DUNE_GDT_SPACES_CG_BIND_GDT_UG(_m)                                                                          \
+//  _DUNE_GDT_SPACES_CG_BIND_GDT_UG_LAYER(_m, dd_subdomain);                                                           \
+//  _DUNE_GDT_SPACES_CG_BIND_GDT_UG_LAYER(_m, leaf);                                                                   \
+//  _DUNE_GDT_SPACES_CG_BIND_GDT_UG_LAYER(_m, level)
 //#else
-#define _DUNE_GDT_SPACES_CG_BIND_FEM_UG(_m)
+#define _DUNE_GDT_SPACES_CG_BIND_GDT_UG(_m)
 //#endif
 
-#define _DUNE_GDT_SPACES_CG_BIND_FEM_YASP_LAYER(_m, _layer)                                                            \
-  _DUNE_GDT_SPACES_CG_BIND_FEM(_m, YASP_1D_EQUIDISTANT_OFFSET, _layer, 1, 1);                                          \
-  _DUNE_GDT_SPACES_CG_BIND_FEM(_m, YASP_2D_EQUIDISTANT_OFFSET, _layer, 1, 1)
-#define _DUNE_GDT_SPACES_CG_BIND_FEM_YASP(_m)                                                                          \
-  _DUNE_GDT_SPACES_CG_BIND_FEM_YASP_LAYER(_m, dd_subdomain);                                                           \
-  _DUNE_GDT_SPACES_CG_BIND_FEM_YASP_LAYER(_m, leaf);                                                                   \
-  _DUNE_GDT_SPACES_CG_BIND_FEM_YASP_LAYER(_m, level)
-
-#define _DUNE_GDT_SPACES_CG_BIND_FEM_ALL(_m)                                                                           \
-  _DUNE_GDT_SPACES_CG_BIND_FEM_ALBERTA(_m);                                                                            \
-  _DUNE_GDT_SPACES_CG_BIND_FEM_ALU(_m);                                                                                \
-  _DUNE_GDT_SPACES_CG_BIND_FEM_UG(_m);                                                                                 \
-  _DUNE_GDT_SPACES_CG_BIND_FEM_YASP(_m)
+#define _DUNE_GDT_SPACES_CG_BIND_GDT_YASP_LAYER(_m, _layer)                                                            \
+  _DUNE_GDT_SPACES_CG_BIND_GDT(_m, YASP_1D_EQUIDISTANT_OFFSET, _layer, 1, 1);                                          \
+  _DUNE_GDT_SPACES_CG_BIND_GDT(_m, YASP_2D_EQUIDISTANT_OFFSET, _layer, 1, 1)
+#define _DUNE_GDT_SPACES_CG_BIND_GDT_YASP(_m)                                                                          \
+  _DUNE_GDT_SPACES_CG_BIND_GDT_YASP_LAYER(_m, dd_subdomain);                                                           \
+  _DUNE_GDT_SPACES_CG_BIND_GDT_YASP_LAYER(_m, leaf);                                                                   \
+  _DUNE_GDT_SPACES_CG_BIND_GDT_YASP_LAYER(_m, level)
+
+#define _DUNE_GDT_SPACES_CG_BIND_GDT_ALL(_m)                                                                           \
+  _DUNE_GDT_SPACES_CG_BIND_GDT_ALBERTA(_m);                                                                            \
+  _DUNE_GDT_SPACES_CG_BIND_GDT_ALU(_m);                                                                                \
+  _DUNE_GDT_SPACES_CG_BIND_GDT_UG(_m);                                                                                 \
+  _DUNE_GDT_SPACES_CG_BIND_GDT_YASP(_m)
 #else // HAVE_DUNE_FEM
-#define _DUNE_GDT_SPACES_CG_BIND_FEM_ALL(_m)
+#define _DUNE_GDT_SPACES_CG_BIND_GDT_ALL(_m)
 #endif
 
-//// * pdelab
-//#if HAVE_DUNE_PDELAB
-//#define _DUNE_GDT_SPACES_CG_BIND_PDELAB(_m, _GRID, _layer, _r, _rC)                                                  \
-//  Dune::GDT::bindings::SpaceInterface<Dune::GDT::CgSpaceProvider<_GRID,                                              \
-//                                                                 Dune::XT::Grid::Layers::_layer,                     \
-//                                                                 Dune::GDT::Backends::pdelab,              \
-//                                                                 1,                                                  \
-//                                                                 double,                                             \
-//                                                                 _r,                                                 \
-//                                                                 _rC>>::bind(_m)
 
-//#if HAVE_ALBERTA
-//#define _DUNE_GDT_SPACES_CG_BIND_PDELAB_ALBERTA_LAYER(_m, _layer)                                                    \
-//  _DUNE_GDT_SPACES_CG_BIND_PDELAB(_m, ALBERTA_2D, _layer, 1, 1)
-//#define _DUNE_GDT_SPACES_CG_BIND_PDELAB_ALBERTA(_m)                                                                  \
-//  _DUNE_GDT_SPACES_CG_BIND_PDELAB_ALBERTA_LAYER(_m, leaf);                                                           \
-//  _DUNE_GDT_SPACES_CG_BIND_PDELAB_ALBERTA_LAYER(_m, level)
-//#else
-//#define _DUNE_GDT_SPACES_CG_BIND_PDELAB_ALBERTA(_m)
-//#endif
-
-//#if HAVE_DUNE_ALUGRID
-//#define _DUNE_GDT_SPACES_CG_BIND_PDELAB_ALU_LAYER(_m, _layer)                                                        \
-//  _DUNE_GDT_SPACES_CG_BIND_PDELAB(_m, ALU_2D_SIMPLEX_CONFORMING, _layer, 1, 1)
-//#define _DUNE_GDT_SPACES_CG_BIND_PDELAB_ALU(_m)                                                                      \
-//  _DUNE_GDT_SPACES_CG_BIND_PDELAB_ALU_LAYER(_m, leaf);                                                               \
-//  _DUNE_GDT_SPACES_CG_BIND_PDELAB_ALU_LAYER(_m, level)
-//#else
-//#define _DUNE_GDT_SPACES_CG_BIND_PDELAB_ALU(_m, _layer)
-//#endif
-
-////#if HAVE_DUNE_UGGRID || HAVE_UG // <- does not work
-////#define _DUNE_GDT_SPACES_CG_BIND_PDELAB_UG_LAYER(_m, _layer) _DUNE_GDT_SPACES_CG_BIND_PDELAB(_m, UG_2D, _layer, 1,
-/// 1)
-////#define _DUNE_GDT_SPACES_CG_BIND_PDELAB_UG(_m)
-////  _DUNE_GDT_SPACES_CG_BIND_PDELAB_UG_LAYER(_m, leaf);
-////  _DUNE_GDT_SPACES_CG_BIND_PDELAB_UG_LAYER(_m, level)
-////#else
-////#define _DUNE_GDT_SPACES_CG_BIND_PDELAB_UG(_m, _layer)
-////#endif
-
-//#define _DUNE_GDT_SPACES_CG_BIND_PDELAB_YASP_LAYER(_m, _layer)                                                       \
-//  _DUNE_GDT_SPACES_CG_BIND_PDELAB(_m, YASP_1D_EQUIDISTANT_OFFSET, _layer, 1, 1);\
-//  _DUNE_GDT_SPACES_CG_BIND_PDELAB(_m, YASP_2D_EQUIDISTANT_OFFSET, _layer, 1, 1)
-//#define _DUNE_GDT_SPACES_CG_BIND_PDELAB_YASP(_m)                                                                     \
-//  _DUNE_GDT_SPACES_CG_BIND_PDELAB_YASP_LAYER(_m, leaf);                                                              \
-//  _DUNE_GDT_SPACES_CG_BIND_PDELAB_YASP_LAYER(_m, level)
-
-//#define _DUNE_GDT_SPACES_CG_BIND_PDELAB_ALL(_m)                                                                      \
-//  _DUNE_GDT_SPACES_CG_BIND_PDELAB_ALBERTA(_m);                                                                       \
-//  _DUNE_GDT_SPACES_CG_BIND_PDELAB_ALU(_m);                                                                           \
-//  _DUNE_GDT_SPACES_CG_BIND_PDELAB_YASP(_m)
-////  _DUNE_GDT_SPACES_CG_BIND_PDELAB_UG(_m); // <- does not work
-//#else // HAVE_DUNE_PDELAB
-#define _DUNE_GDT_SPACES_CG_BIND_PDELAB_ALL(_m)
-//#endif
-
-#define DUNE_GDT_SPACES_CG_BIND(_m)                                                                                    \
-  _DUNE_GDT_SPACES_CG_BIND_FEM_ALL(_m);                                                                                \
-  _DUNE_GDT_SPACES_CG_BIND_PDELAB_ALL(_m)
+#define DUNE_GDT_SPACES_CG_BIND(_m) _DUNE_GDT_SPACES_CG_BIND_GDT_ALL(_m);
 
 // end: this is what we need for the .so
 
-- 
GitLab