From c0fddf57b28d31bdde68094241a6d09516177245 Mon Sep 17 00:00:00 2001
From: Felix Schindler <felix.schindler@wwu.de>
Date: Sat, 7 Feb 2015 17:56:17 +0100
Subject: [PATCH] use size_t whenever possible, only polOrder is int

---
 dune/gdt/assembler/local/codim0.hh            |  5 +-
 dune/gdt/assembler/local/codim1.hh            | 16 ++--
 dune/gdt/basefunctionset/default/fv.hh        | 10 ++-
 .../gdt/basefunctionset/fem-localfunctions.hh | 10 +--
 dune/gdt/basefunctionset/fem.hh               | 16 ++--
 dune/gdt/basefunctionset/interface.hh         |  2 +-
 dune/gdt/basefunctionset/pdelab.hh            | 31 ++++----
 dune/gdt/discretefunction/local.hh            | 12 +--
 dune/gdt/localevaluation/elliptic.hh          | 24 +++---
 dune/gdt/localevaluation/interface.hh         | 34 ++++-----
 dune/gdt/localevaluation/product.hh           | 24 +++---
 dune/gdt/localevaluation/sipdg.hh             | 30 ++++----
 dune/gdt/localevaluation/swipdg.hh            | 40 +++++-----
 dune/gdt/localfunctional/codim0.hh            |  2 +-
 dune/gdt/localfunctional/codim1.hh            |  2 +-
 dune/gdt/localfunctional/interface.hh         |  4 +-
 dune/gdt/localoperator/codim0.hh              |  2 +-
 dune/gdt/localoperator/codim1.hh              | 13 ++--
 dune/gdt/localoperator/interface.hh           |  9 ++-
 dune/gdt/mapper/default/fv.hh                 |  8 +-
 dune/gdt/mapper/fem.hh                        |  8 +-
 dune/gdt/operators/darcy.hh                   |  4 +-
 dune/gdt/operators/fluxreconstruction.hh      |  2 +-
 dune/gdt/operators/interfaces.hh              |  2 +-
 dune/gdt/operators/oswaldinterpolation.hh     |  5 +-
 dune/gdt/operators/projections.hh             | 56 ++++++++------
 dune/gdt/operators/prolongations.hh           | 76 +++++++++----------
 .../gdt/playground/localevaluation/ESV2007.hh | 26 ++++---
 dune/gdt/playground/localevaluation/OS2014.hh | 15 ++--
 dune/gdt/playground/localevaluation/swipdg.hh | 49 ++++++------
 .../operators/fluxreconstruction.hh           |  2 +-
 dune/gdt/playground/spaces/block.hh           |  2 +-
 .../spaces/cg/fem-localfunctions.hh           | 16 ++--
 .../continuouslagrange/fem-localfunctions.hh  |  2 +-
 .../spaces/dg/fem-localfunctions.hh           | 18 ++---
 dune/gdt/playground/spaces/dg/fem.hh          | 18 ++---
 dune/gdt/playground/spaces/dg/pdelab.hh       | 18 ++---
 .../fem-localfunctions.hh                     |  2 +-
 .../spaces/discontinuouslagrange/fem.hh       |  2 +-
 .../spaces/discontinuouslagrange/pdelab.hh    |  2 +-
 .../playground/spaces/finitevolume/default.hh |  2 +-
 .../raviartthomas/fem-localfunctions.hh       |  2 +-
 .../playground/spaces/raviartthomas/pdelab.hh |  2 +-
 .../spaces/rt/fem-localfunctions.hh           | 24 +++---
 dune/gdt/products/base.hh                     |  4 +-
 dune/gdt/products/interfaces.hh               |  4 +-
 dune/gdt/spaces/cg.hh                         | 14 ++--
 dune/gdt/spaces/cg/fem.hh                     | 16 ++--
 dune/gdt/spaces/cg/interface.hh               | 18 +++--
 dune/gdt/spaces/cg/pdelab.hh                  | 16 ++--
 dune/gdt/spaces/continuouslagrange/base.hh    | 10 +--
 dune/gdt/spaces/continuouslagrange/fem.hh     |  2 +-
 dune/gdt/spaces/continuouslagrange/pdelab.hh  |  2 +-
 dune/gdt/spaces/dg.hh                         | 14 ++--
 dune/gdt/spaces/fv/default.hh                 | 16 ++--
 dune/gdt/spaces/interface.hh                  | 40 +++++-----
 dune/gdt/spaces/rt/interface.hh               | 18 +++--
 dune/gdt/spaces/rt/pdelab.hh                  | 12 +--
 test/elliptic-cg-discretization.hh            |  8 +-
 test/elliptic-sipdg-discretization.hh         |  8 +-
 test/elliptic-swipdg-discretization.hh        | 16 ++--
 test/elliptic-testcases.hh                    | 22 +++---
 test/operators_darcy.hh                       |  2 +-
 test/operators_elliptic_swipdg.cc             |  6 +-
 test/operators_oswaldinterpolation.hh         |  2 +-
 test/operators_products_prolong.hh            |  4 +-
 test/operators_projections.hh                 |  4 +-
 test/products.hh                              | 12 +--
 test/products_boundaryl2.hh                   |  6 +-
 test/products_elliptic.hh                     |  6 +-
 test/products_swipdgpenalty.hh                |  4 +-
 test/products_weightedl2.hh                   |  6 +-
 test/spaces.hh                                | 35 +++++----
 test/spaces_cg.hh                             | 23 +++---
 test/spaces_dg.hh                             | 19 +++--
 test/spaces_rt.hh                             |  2 +-
 76 files changed, 529 insertions(+), 491 deletions(-)

diff --git a/dune/gdt/assembler/local/codim0.hh b/dune/gdt/assembler/local/codim0.hh
index 1fedf823b..6d421eb83 100644
--- a/dune/gdt/assembler/local/codim0.hh
+++ b/dune/gdt/assembler/local/codim0.hh
@@ -68,7 +68,8 @@ public:
    * type of systemMatrix
    *  \tparam R           RangeFieldType, i.e. double
    */
-  template <class T, int Td, int Tr, int TrC, class A, int Ad, int Ar, int ArC, class EntityType, class M, class R>
+  template <class T, size_t Td, size_t Tr, size_t TrC, class A, size_t Ad, size_t Ar, size_t ArC, class EntityType,
+            class M, class R>
   void assembleLocal(const SpaceInterface<T, Td, Tr, TrC>& testSpace, const SpaceInterface<A, Ad, Ar, ArC>& ansatzSpace,
                      const EntityType& entity, Dune::Stuff::LA::MatrixInterface<M, R>& systemMatrix,
                      std::vector<std::vector<Dune::DynamicMatrix<R>>>& tmpLocalMatricesContainer,
@@ -149,7 +150,7 @@ public:
    * type of systemVector
    *  \tparam R           RangeFieldType, i.e. double
    */
-  template <class T, int d, int r, int rC, class EntityType, class V, class R>
+  template <class T, size_t d, size_t r, size_t rC, class EntityType, class V, class R>
   void assembleLocal(const SpaceInterface<T, d, r, rC>& testSpace, const EntityType& entity,
                      Dune::Stuff::LA::VectorInterface<V, R>& systemVector,
                      std::vector<std::vector<Dune::DynamicVector<R>>>& tmpLocalVectorContainer,
diff --git a/dune/gdt/assembler/local/codim1.hh b/dune/gdt/assembler/local/codim1.hh
index 99d35484e..5c2358baf 100644
--- a/dune/gdt/assembler/local/codim1.hh
+++ b/dune/gdt/assembler/local/codim1.hh
@@ -52,9 +52,9 @@ public:
     return {numTmpObjectsRequired_, localOperator_.numTmpObjectsRequired()};
   }
 
-  template <class TE, int TEd, int TEr, int TErC, class AE, int AEd, int AEr, int AErC, class TN, int TNd, int TNr,
-            int TNrC, class AN, int ANd, int ANr, int ANrC, class IntersectionType, class MEE, class MNN, class MEN,
-            class MNE, class R>
+  template <class TE, size_t TEd, size_t TEr, size_t TErC, class AE, size_t AEd, size_t AEr, size_t AErC, class TN,
+            size_t TNd, size_t TNr, size_t TNrC, class AN, size_t ANd, size_t ANr, size_t ANrC, class IntersectionType,
+            class MEE, class MNN, class MEN, class MNE, class R>
   void assembleLocal(const SpaceInterface<TE, TEd, TEr, TErC>& testSpaceEntity,
                      const SpaceInterface<AE, AEd, AEr, AErC>& ansatzSpaceEntity,
                      const SpaceInterface<TN, TNd, TNr, TNrC>& testSpaceNeighbor,
@@ -150,8 +150,8 @@ public:
     }
   } // void assembleLocal(...) const
 
-  template <class T, int Td, int Tr, int TrC, class A, int Ad, int Ar, int ArC, class IntersectionType, class M,
-            class R>
+  template <class T, size_t Td, size_t Tr, size_t TrC, class A, size_t Ad, size_t Ar, size_t ArC,
+            class IntersectionType, class M, class R>
   void assembleLocal(const SpaceInterface<T, Td, Tr, TrC>& testSpace, const SpaceInterface<A, Ad, Ar, ArC>& ansatzSpace,
                      const IntersectionType& intersection, Dune::Stuff::LA::MatrixInterface<M, R>& systemMatrix,
                      std::vector<std::vector<Dune::DynamicMatrix<R>>>& tmpLocalMatricesContainer,
@@ -204,8 +204,8 @@ public:
     return {numTmpObjectsRequired_, localOperator_.numTmpObjectsRequired()};
   }
 
-  template <class T, int Td, int Tr, int TrC, class A, int Ad, int Ar, int ArC, class IntersectionType, class M,
-            class R>
+  template <class T, size_t Td, size_t Tr, size_t TrC, class A, size_t Ad, size_t Ar, size_t ArC,
+            class IntersectionType, class M, class R>
   void assembleLocal(const SpaceInterface<T, Td, Tr, TrC>& testSpace, const SpaceInterface<A, Ad, Ar, ArC>& ansatzSpace,
                      const IntersectionType& intersection, Dune::Stuff::LA::MatrixInterface<M, R>& systemMatrix,
                      std::vector<std::vector<Dune::DynamicMatrix<R>>>& tmpLocalMatricesContainer,
@@ -284,7 +284,7 @@ public:
     return {numTmpObjectsRequired_, localFunctional_.numTmpObjectsRequired()};
   }
 
-  template <class T, int d, int r, int rC, class IntersectionType, class V, class R>
+  template <class T, size_t d, size_t r, size_t rC, class IntersectionType, class V, class R>
   void assembleLocal(const SpaceInterface<T, d, r, rC>& testSpace, const IntersectionType& intersection,
                      Dune::Stuff::LA::VectorInterface<V, R>& systemVector,
                      std::vector<std::vector<Dune::DynamicVector<R>>>& tmpLocalVectorsContainer,
diff --git a/dune/gdt/basefunctionset/default/fv.hh b/dune/gdt/basefunctionset/default/fv.hh
index f234324eb..b19b3405c 100644
--- a/dune/gdt/basefunctionset/default/fv.hh
+++ b/dune/gdt/basefunctionset/default/fv.hh
@@ -19,7 +19,8 @@ namespace BaseFunctionSet {
 
 
 // forward, to be used in the traits and to allow for specialization
-template <class EntityImp, class DomainFieldImp, int domainDim, class RangeFieldImp, int rangeDim, int rangeDimCols = 1>
+template <class EntityImp, class DomainFieldImp, size_t domainDim, class RangeFieldImp, size_t rangeDim,
+          size_t rangeDimCols = 1>
 class FiniteVolume
 {
   static_assert(Dune::AlwaysFalse<EntityImp>::value, "Untested for these dimensions!");
@@ -29,7 +30,8 @@ class FiniteVolume
 namespace internal {
 
 
-template <class EntityImp, class DomainFieldImp, int domainDim, class RangeFieldImp, int rangeDim, int rangeDimCols>
+template <class EntityImp, class DomainFieldImp, size_t domainDim, class RangeFieldImp, size_t rangeDim,
+          size_t rangeDimCols>
 class FiniteVolumeTraits
 {
 public:
@@ -42,7 +44,7 @@ public:
 } // namespace internal
 
 
-template <class EntityImp, class DomainFieldImp, int domainDim, class RangeFieldImp>
+template <class EntityImp, class DomainFieldImp, size_t domainDim, class RangeFieldImp>
 class FiniteVolume<EntityImp, DomainFieldImp, domainDim, RangeFieldImp, 1, 1>
     : public BaseFunctionSetInterface<internal::FiniteVolumeTraits<EntityImp, DomainFieldImp, domainDim, RangeFieldImp,
                                                                    1, 1>,
@@ -110,7 +112,7 @@ private:
 }; // class FiniteVolume< ..., 1, 1 >
 
 
-template <class EntityImp, class DomainFieldImp, int domainDim, class RangeFieldImp, int rangeDim>
+template <class EntityImp, class DomainFieldImp, size_t domainDim, class RangeFieldImp, size_t rangeDim>
 class FiniteVolume<EntityImp, DomainFieldImp, domainDim, RangeFieldImp, rangeDim, 1>
     : public BaseFunctionSetInterface<internal::FiniteVolumeTraits<EntityImp, DomainFieldImp, domainDim, RangeFieldImp,
                                                                    rangeDim, 1>,
diff --git a/dune/gdt/basefunctionset/fem-localfunctions.hh b/dune/gdt/basefunctionset/fem-localfunctions.hh
index ebf2704a2..7c2a2ce74 100644
--- a/dune/gdt/basefunctionset/fem-localfunctions.hh
+++ b/dune/gdt/basefunctionset/fem-localfunctions.hh
@@ -18,8 +18,8 @@ namespace BaseFunctionSet {
 
 
 // forward, to be used in the traits and to allow for specialization
-template <class BaseFunctionSetMapImp, class DomainFieldImp, int domainDim, class RangeFieldImp, int rangeDim,
-          int rangeDimCols = 1>
+template <class BaseFunctionSetMapImp, class DomainFieldImp, size_t domainDim, class RangeFieldImp, size_t rangeDim,
+          size_t rangeDimCols = 1>
 class FemLocalfunctionsWrapper
 {
   static_assert(AlwaysFalse<BaseFunctionSetMapImp>::value, "Untested for these dimensions!");
@@ -29,8 +29,8 @@ class FemLocalfunctionsWrapper
 namespace internal {
 
 
-template <class BaseFunctionSetMapImp, class DomainFieldImp, int domainDim, class RangeFieldImp, int rangeDim,
-          int rangeDimCols>
+template <class BaseFunctionSetMapImp, class DomainFieldImp, size_t domainDim, class RangeFieldImp, size_t rangeDim,
+          size_t rangeDimCols>
 class FemLocalfunctionsWrapperTraits
 {
 public:
@@ -44,7 +44,7 @@ public:
 } // namespace internal
 
 
-template <class BaseFunctionSetMapImp, class DomainFieldImp, int domainDim, class RangeFieldImp, int rangeDim>
+template <class BaseFunctionSetMapImp, class DomainFieldImp, size_t domainDim, class RangeFieldImp, size_t rangeDim>
 class FemLocalfunctionsWrapper<BaseFunctionSetMapImp, DomainFieldImp, domainDim, RangeFieldImp, rangeDim, 1>
     : public BaseFunctionSetInterface<internal::FemLocalfunctionsWrapperTraits<BaseFunctionSetMapImp, DomainFieldImp,
                                                                                domainDim, RangeFieldImp, rangeDim, 1>,
diff --git a/dune/gdt/basefunctionset/fem.hh b/dune/gdt/basefunctionset/fem.hh
index 113d3b7c6..66d3e5ec1 100644
--- a/dune/gdt/basefunctionset/fem.hh
+++ b/dune/gdt/basefunctionset/fem.hh
@@ -27,8 +27,8 @@ namespace BaseFunctionSet {
 
 
 // forward, to be used in the traits and to allow for specialization
-template <class ShapeFunctionSetImp, class EntityImp, class DomainFieldImp, int domainDim, class RangeFieldImp,
-          int rangeDim, int rangeDimCols = 1>
+template <class ShapeFunctionSetImp, class EntityImp, class DomainFieldImp, size_t domainDim, class RangeFieldImp,
+          size_t rangeDim, size_t rangeDimCols = 1>
 class FemWrapper
 {
   static_assert(Dune::AlwaysFalse<ShapeFunctionSetImp>::value, "Untested for these dimensions!");
@@ -38,8 +38,8 @@ class FemWrapper
 namespace internal {
 
 
-template <class ShapeFunctionSetImp, class EntityImp, class DomainFieldImp, int domainDim, class RangeFieldImp,
-          int rangeDim, int rangeDimCols>
+template <class ShapeFunctionSetImp, class EntityImp, class DomainFieldImp, size_t domainDim, class RangeFieldImp,
+          size_t rangeDim, size_t rangeDimCols>
 class FemWrapperTraits
 {
 public:
@@ -53,8 +53,8 @@ public:
 } // namespace internal
 
 
-template <class ShapeFunctionSetImp, class EntityImp, class DomainFieldImp, int domainDim, class RangeFieldImp,
-          int rangeDim>
+template <class ShapeFunctionSetImp, class EntityImp, class DomainFieldImp, size_t domainDim, class RangeFieldImp,
+          size_t rangeDim>
 class FemWrapper<ShapeFunctionSetImp, EntityImp, DomainFieldImp, domainDim, RangeFieldImp, rangeDim, 1>
     : public BaseFunctionSetInterface<internal::FemWrapperTraits<ShapeFunctionSetImp, EntityImp, DomainFieldImp,
                                                                  domainDim, RangeFieldImp, rangeDim, 1>,
@@ -127,8 +127,8 @@ private:
 #else // HAVE_DUNE_FEM
 
 
-template <class ShapeFunctionSetImp, class EntityImp, class DomainFieldImp, int domainDim, class RangeFieldImp,
-          int rangeDim, int rangeDimCols = 1>
+template <class ShapeFunctionSetImp, class EntityImp, class DomainFieldImp, size_t domainDim, class RangeFieldImp,
+          size_t rangeDim, size_t rangeDimCols = 1>
 class FemWrapper
 {
   static_assert(Dune::AlwaysFalse<ShapeFunctionSetImp>::value, "You are missing dune-fem!");
diff --git a/dune/gdt/basefunctionset/interface.hh b/dune/gdt/basefunctionset/interface.hh
index a2c1c55ad..7fb8fff8c 100644
--- a/dune/gdt/basefunctionset/interface.hh
+++ b/dune/gdt/basefunctionset/interface.hh
@@ -21,7 +21,7 @@ namespace GDT {
  *
  *          \see Stuff::LocalfunctionSetInterface for the template parameters D, d, R, r and rC.
  */
-template <class Traits, class D, int d, class R, int r, int rC = 1>
+template <class Traits, class D, size_t d, class R, size_t r, size_t rC = 1>
 class BaseFunctionSetInterface : public Stuff::LocalfunctionSetInterface<typename Traits::EntityType, D, d, R, r, rC>,
                                  public Stuff::CRTPInterface<BaseFunctionSetInterface<Traits, D, d, R, r, rC>, Traits>
 {
diff --git a/dune/gdt/basefunctionset/pdelab.hh b/dune/gdt/basefunctionset/pdelab.hh
index 5a4008a65..c980b86d9 100644
--- a/dune/gdt/basefunctionset/pdelab.hh
+++ b/dune/gdt/basefunctionset/pdelab.hh
@@ -25,16 +25,16 @@ namespace BaseFunctionSet {
 
 
 // forwards, to be used in the traits and to allow for specialization
-template <class PdelabSpaceImp, class EntityImp, class DomainFieldImp, int domainDim, class RangeFieldImp, int rangeDim,
-          int rangeDimCols = 1>
+template <class PdelabSpaceImp, class EntityImp, class DomainFieldImp, size_t domainDim, class RangeFieldImp,
+          size_t rangeDim, size_t rangeDimCols = 1>
 class PdelabWrapper
 {
   static_assert(Dune::AlwaysFalse<PdelabSpaceImp>::value, "Untested for arbitrary dimension!");
 };
 
 
-template <class PdelabSpaceImp, class EntityImp, class DomainFieldImp, int domainDim, class RangeFieldImp, int rangeDim,
-          int rangeDimCols = 1>
+template <class PdelabSpaceImp, class EntityImp, class DomainFieldImp, size_t domainDim, class RangeFieldImp,
+          size_t rangeDim, size_t rangeDimCols = 1>
 class PiolaTransformedPdelabWrapper
 {
   static_assert(Dune::AlwaysFalse<PdelabSpaceImp>::value, "Untested for these dimensions!");
@@ -45,13 +45,13 @@ namespace internal {
 
 
 // forward, to allow for specialization
-template <class PdelabSpaceImp, class EntityImp, class DomainFieldImp, int domainDim, class RangeFieldImp, int rangeDim,
-          int rangeDimCols>
+template <class PdelabSpaceImp, class EntityImp, class DomainFieldImp, size_t domainDim, class RangeFieldImp,
+          size_t rangeDim, size_t rangeDimCols>
 class PdelabWrapperTraits;
 
 
 //! Specialization for dimRange = 1, dimRangeRows = 1
-template <class PdelabSpaceImp, class EntityImp, class DomainFieldImp, int domainDim, class RangeFieldImp>
+template <class PdelabSpaceImp, class EntityImp, class DomainFieldImp, size_t domainDim, class RangeFieldImp>
 class PdelabWrapperTraits<PdelabSpaceImp, EntityImp, DomainFieldImp, domainDim, RangeFieldImp, 1, 1>
 {
 public:
@@ -70,7 +70,8 @@ private:
 };
 
 
-template <class PdelabSpaceImp, class EntityImp, class DomainFieldImp, int domainDim, class RangeFieldImp, int rangeDim>
+template <class PdelabSpaceImp, class EntityImp, class DomainFieldImp, size_t domainDim, class RangeFieldImp,
+          size_t rangeDim>
 class PiolaTransformedPdelabWrapperTraits
 {
   static_assert(domainDim == rangeDim, "Untested!");
@@ -97,7 +98,7 @@ private:
 
 
 //! Specialization for dimRange = 1, dimRangeRows = 1
-template <class PdelabSpaceType, class EntityImp, class DomainFieldImp, int domainDim, class RangeFieldImp>
+template <class PdelabSpaceType, class EntityImp, class DomainFieldImp, size_t domainDim, class RangeFieldImp>
 class PdelabWrapper<PdelabSpaceType, EntityImp, DomainFieldImp, domainDim, RangeFieldImp, 1, 1>
     : public BaseFunctionSetInterface<internal::PdelabWrapperTraits<PdelabSpaceType, EntityImp, DomainFieldImp,
                                                                     domainDim, RangeFieldImp, 1, 1>,
@@ -181,8 +182,8 @@ private:
 }; // class PdelabWrapper
 
 
-template <class PdelabSpaceType, class EntityImp, class DomainFieldImp, int domainDim, class RangeFieldImp,
-          int rangeDim>
+template <class PdelabSpaceType, class EntityImp, class DomainFieldImp, size_t domainDim, class RangeFieldImp,
+          size_t rangeDim>
 class PiolaTransformedPdelabWrapper<PdelabSpaceType, EntityImp, DomainFieldImp, domainDim, RangeFieldImp, rangeDim, 1>
     : public BaseFunctionSetInterface<internal::PiolaTransformedPdelabWrapperTraits<PdelabSpaceType, EntityImp,
                                                                                     DomainFieldImp, domainDim,
@@ -302,16 +303,16 @@ private:
 #else // HAVE_DUNE_PDELAB
 
 
-template <class PdelabSpaceImp, class EntityImp, class DomainFieldImp, int domainDim, class RangeFieldImp, int rangeDim,
-          int rangeDimCols = 1>
+template <class PdelabSpaceImp, class EntityImp, class DomainFieldImp, size_t domainDim, class RangeFieldImp,
+          size_t rangeDim, size_t rangeDimCols = 1>
 class PdelabWrapper
 {
   static_assert(AlwaysFalse<PdelabSpaceImp>::value, "You are missing dune-pdelab!");
 };
 
 
-template <class PdelabSpaceImp, class EntityImp, class DomainFieldImp, int domainDim, class RangeFieldImp, int rangeDim,
-          int rangeDimCols = 1>
+template <class PdelabSpaceImp, class EntityImp, class DomainFieldImp, size_t domainDim, class RangeFieldImp,
+          size_t rangeDim, size_t rangeDimCols = 1>
 class PiolaTransformedPdelabWrapper
 {
   static_assert(AlwaysFalse<PdelabSpaceImp>::value, "You are missing dune-pdelab!");
diff --git a/dune/gdt/discretefunction/local.hh b/dune/gdt/discretefunction/local.hh
index 69ff6e9da..e8f1ae116 100644
--- a/dune/gdt/discretefunction/local.hh
+++ b/dune/gdt/discretefunction/local.hh
@@ -148,12 +148,12 @@ public:
   typedef typename BaseType::EntityType EntityType;
 
   typedef typename BaseType::DomainFieldType DomainFieldType;
-  static const unsigned int dimDomain = BaseType::dimDomain;
+  static const size_t dimDomain = BaseType::dimDomain;
   typedef typename BaseType::DomainType DomainType;
 
   typedef typename BaseType::RangeFieldType RangeFieldType;
-  static const unsigned int dimRangeRows = BaseType::dimRangeCols;
-  static const unsigned int dimRangeCols = BaseType::dimRangeCols;
+  static const size_t dimRangeRows = BaseType::dimRangeCols;
+  static const size_t dimRangeCols = BaseType::dimRangeCols;
   typedef typename BaseType::RangeType RangeType;
 
   typedef typename BaseType::JacobianRangeType JacobianRangeType;
@@ -246,12 +246,12 @@ public:
   typedef typename BaseType::EntityType EntityType;
 
   typedef typename BaseType::DomainFieldType DomainFieldType;
-  static const unsigned int dimDomain = BaseType::dimDomain;
+  static const size_t dimDomain = BaseType::dimDomain;
   typedef typename BaseType::DomainType DomainType;
 
   typedef typename BaseType::RangeFieldType RangeFieldType;
-  static const unsigned int dimRangeRows = BaseType::dimRangeCols;
-  static const unsigned int dimRangeCols = BaseType::dimRangeCols;
+  static const size_t dimRangeRows = BaseType::dimRangeCols;
+  static const size_t dimRangeCols = BaseType::dimRangeCols;
   typedef typename BaseType::RangeType RangeType;
 
   typedef typename BaseType::JacobianRangeType JacobianRangeType;
diff --git a/dune/gdt/localevaluation/elliptic.hh b/dune/gdt/localevaluation/elliptic.hh
index 5b561be5d..55e23dfde 100644
--- a/dune/gdt/localevaluation/elliptic.hh
+++ b/dune/gdt/localevaluation/elliptic.hh
@@ -56,7 +56,7 @@ public:
                      std::shared_ptr<typename DiffusionTensorType::LocalfunctionType>> LocalfunctionTupleType;
   typedef typename DiffusionFactorType::EntityType EntityType;
   typedef typename DiffusionFactorType::DomainFieldType DomainFieldType;
-  static const unsigned int dimDomain = DiffusionFactorType::dimDomain;
+  static const size_t dimDomain = DiffusionFactorType::dimDomain;
 }; // class EllipticTraits
 
 
@@ -77,7 +77,7 @@ public:
   typedef typename DiffusionType::EntityType EntityType;
   typedef typename DiffusionType::DomainFieldType DomainFieldType;
   typedef std::tuple<std::shared_ptr<typename DiffusionType::LocalfunctionType>> LocalfunctionTupleType;
-  static const unsigned int dimDomain = DiffusionType::dimDomain;
+  static const size_t dimDomain = DiffusionType::dimDomain;
 }; // class EllipticTraits< ..., void >
 
 
@@ -99,7 +99,7 @@ public:
   typedef typename Traits::LocalfunctionTupleType LocalfunctionTupleType;
   typedef typename Traits::EntityType EntityType;
   typedef typename Traits::DomainFieldType DomainFieldType;
-  static const unsigned int dimDomain = Traits::dimDomain;
+  static const size_t dimDomain = Traits::dimDomain;
 
   Elliptic(const DiffusionFactorType& diffusion_factor, const DiffusionTensorType& diffusion_tensor)
     : diffusion_factor_(diffusion_factor)
@@ -115,7 +115,7 @@ public:
   /**
    * \brief extracts the local functions and calls the correct order() method
    */
-  template <class R, int rT, int rCT, int rA, int rCA>
+  template <class R, size_t rT, size_t rCT, size_t rA, size_t rCA>
   size_t
   order(const LocalfunctionTupleType& local_functions_tuple,
         const Stuff::LocalfunctionSetInterface<EntityType, DomainFieldType, dimDomain, R, rT, rCT>& testBase,
@@ -129,7 +129,7 @@ public:
   /**
    * \brief extracts the local functions and calls the correct evaluate() method
    */
-  template <class R, int rT, int rCT, int rA, int rCA>
+  template <class R, size_t rT, size_t rCT, size_t rA, size_t rCA>
   void evaluate(const LocalfunctionTupleType& local_functions_tuple,
                 const Stuff::LocalfunctionSetInterface<EntityType, DomainFieldType, dimDomain, R, rT, rCT>& testBase,
                 const Stuff::LocalfunctionSetInterface<EntityType, DomainFieldType, dimDomain, R, rA, rCA>& ansatzBase,
@@ -141,7 +141,7 @@ public:
   }
 
 private:
-  template <class R, int rDF, int rCDF, int rDT, int rCDT, int rT, int rCT, int rA, int rCA>
+  template <class R, size_t rDF, size_t rCDF, size_t rDT, size_t rCDT, size_t rT, size_t rCT, size_t rA, size_t rCA>
   size_t order(
       const Stuff::LocalfunctionInterface<EntityType, DomainFieldType, dimDomain, R, rDF, rCDF>& local_diffusion_factor,
       const Stuff::LocalfunctionInterface<EntityType, DomainFieldType, dimDomain, R, rDT, rCDT>& local_diffusion_tensor,
@@ -153,7 +153,7 @@ private:
            + std::max(ssize_t(ansatzBase.order()) - 1, ssize_t(0));
   } // ... order(...)
 
-  template <class R, int r>
+  template <class R, size_t r>
   void
   evaluate(const Stuff::LocalfunctionInterface<EntityType, DomainFieldType, dimDomain, R, 1, 1>& local_diffusion_factor,
            const Stuff::LocalfunctionInterface<EntityType, DomainFieldType, dimDomain, R, 1, 1>& local_diffusion_tensor,
@@ -262,7 +262,7 @@ public:
   typedef typename Traits::LocalfunctionTupleType LocalfunctionTupleType;
   typedef typename Traits::EntityType EntityType;
   typedef typename Traits::DomainFieldType DomainFieldType;
-  static const unsigned int dimDomain = Traits::dimDomain;
+  static const size_t dimDomain = Traits::dimDomain;
 
   explicit Elliptic(const DiffusionType& inducingFunction)
     : diffusion_(inducingFunction)
@@ -280,7 +280,7 @@ public:
   /**
    * \brief extracts the local functions and calls the correct order() method
    */
-  template <class R, int rT, int rCT, int rA, int rCA>
+  template <class R, size_t rT, size_t rCT, size_t rA, size_t rCA>
   size_t
   order(const LocalfunctionTupleType& localFuncs,
         const Stuff::LocalfunctionSetInterface<EntityType, DomainFieldType, dimDomain, R, rT, rCT>& testBase,
@@ -292,7 +292,7 @@ public:
   /**
    * \brief extracts the local functions and calls the correct evaluate() method
    */
-  template <class R, int rT, int rCT, int rA, int rCA>
+  template <class R, size_t rT, size_t rCT, size_t rA, size_t rCA>
   void evaluate(const LocalfunctionTupleType& localFuncs,
                 const Stuff::LocalfunctionSetInterface<EntityType, DomainFieldType, dimDomain, R, rT, rCT>& testBase,
                 const Stuff::LocalfunctionSetInterface<EntityType, DomainFieldType, dimDomain, R, rA, rCA>& ansatzBase,
@@ -308,7 +308,7 @@ public:
   /**
    *  \return localFunction.order() + (testBase.order() - 1) + (ansatzBase.order() - 1)
    */
-  template <class R, int rL, int rCL, int rT, int rCT, int rA, int rCA>
+  template <class R, size_t rL, size_t rCL, size_t rT, size_t rCT, size_t rA, size_t rCA>
   size_t
   order(const Stuff::LocalfunctionInterface<EntityType, DomainFieldType, dimDomain, R, rL, rCL>& localFunction,
         const Stuff::LocalfunctionSetInterface<EntityType, DomainFieldType, dimDomain, R, rT, rCT>& testBase,
@@ -326,7 +326,7 @@ public:
    *  \brief  Computes an elliptic evaluation for a scalar local function and scalar or vector valued basefunctionsets.
    *  \tparam R RangeFieldType
    */
-  template <class R, int r>
+  template <class R, size_t r>
   void evaluate(const Stuff::LocalfunctionInterface<EntityType, DomainFieldType, dimDomain, R, 1, 1>& localFunction,
                 const Stuff::LocalfunctionSetInterface<EntityType, DomainFieldType, dimDomain, R, r, 1>& testBase,
                 const Stuff::LocalfunctionSetInterface<EntityType, DomainFieldType, dimDomain, R, r, 1>& ansatzBase,
diff --git a/dune/gdt/localevaluation/interface.hh b/dune/gdt/localevaluation/interface.hh
index 02a4bbb50..c29d96577 100644
--- a/dune/gdt/localevaluation/interface.hh
+++ b/dune/gdt/localevaluation/interface.hh
@@ -25,7 +25,7 @@ namespace LocalEvaluation {
  *  \tparam numArguments  The number of local bases.
  *  \note   All evaluations have to be copyable!
  */
-template <class Traits, int numArguments>
+template <class Traits, size_t numArguments>
 class Codim0Interface
 {
   static_assert(AlwaysFalse<Traits>::value, "There is no interface for this numArguments!");
@@ -43,7 +43,7 @@ public:
   typedef typename Traits::EntityType EntityType;
   typedef typename Traits::LocalfunctionTupleType LocalfunctionTupleType;
   typedef typename Traits::DomainFieldType DomainFieldType;
-  static const unsigned int dimDomain = Traits::dimDomain;
+  static const size_t dimDomain = Traits::dimDomain;
 
   LocalfunctionTupleType localFunctions(const EntityType& entity) const
   {
@@ -57,7 +57,7 @@ public:
    *  \tparam r   dimRange of the testBase
    *  \tparam rC  dimRangeRows of the testBase
    */
-  template <class R, int r, int rC>
+  template <class R, size_t r, size_t rC>
   size_t order(const LocalfunctionTupleType& localFunctions_in,
                const Stuff::LocalfunctionSetInterface<EntityType, DomainFieldType, dimDomain, R, r, rC>& testBase) const
   {
@@ -72,7 +72,7 @@ public:
    *  \tparam rC  dimRangeRows of the testBase
    *  \attention ret is assumed to be zero!
    */
-  template <class R, int r, int rC>
+  template <class R, size_t r, size_t rC>
   void evaluate(const LocalfunctionTupleType& localFunctions_in,
                 const Stuff::LocalfunctionSetInterface<EntityType, DomainFieldType, dimDomain, R, r, rC>& testBase,
                 const Dune::FieldVector<DomainFieldType, dimDomain>& localPoint, Dune::DynamicVector<R>& ret) const
@@ -93,7 +93,7 @@ public:
   typedef typename Traits::EntityType EntityType;
   typedef typename Traits::LocalfunctionTupleType LocalfunctionTupleType;
   typedef typename Traits::DomainFieldType DomainFieldType;
-  static const unsigned int dimDomain = Traits::dimDomain;
+  static const size_t dimDomain = Traits::dimDomain;
 
   LocalfunctionTupleType localFunctions(const EntityType& entity) const
   {
@@ -107,7 +107,7 @@ public:
    *  \tparam r{T,A}  dimRange of the {testBase,ansatzBase}
    *  \tparam rC{T,A} dimRangeRows of the {testBase,ansatzBase}
    */
-  template <class R, int rT, int rCT, int rA, int rCA>
+  template <class R, size_t rT, size_t rCT, size_t rA, size_t rCA>
   size_t
   order(const LocalfunctionTupleType& localFunctions,
         const Stuff::LocalfunctionSetInterface<EntityType, DomainFieldType, dimDomain, R, rT, rCT>& testBase,
@@ -124,7 +124,7 @@ public:
    *  \tparam rC{L,T,A} dimRangeRows of the {localFunction,testBase,ansatzBase}
    *  \attention ret is assumed to be zero!
    */
-  template <class R, int rT, int rCT, int rA, int rCA>
+  template <class R, size_t rT, size_t rCT, size_t rA, size_t rCA>
   void evaluate(const LocalfunctionTupleType& localFunctions,
                 const Stuff::LocalfunctionSetInterface<EntityType, DomainFieldType, dimDomain, R, rT, rCT>& testBase,
                 const Stuff::LocalfunctionSetInterface<EntityType, DomainFieldType, dimDomain, R, rA, rCA>& ansatzBase,
@@ -140,7 +140,7 @@ public:
  *  \tparam numArguments  The number of local bases.
  *  \note   All evaluations have to be copyable!
  */
-template <class Traits, int numArguments>
+template <class Traits, size_t numArguments>
 class Codim1Interface
 {
   static_assert(AlwaysFalse<Traits>::value, "There is no interface for this numArguments!");
@@ -158,7 +158,7 @@ public:
   typedef typename Traits::EntityType EntityType;
   typedef typename Traits::LocalfunctionTupleType LocalfunctionTupleType;
   typedef typename Traits::DomainFieldType DomainFieldType;
-  static const unsigned int dimDomain = Traits::dimDomain;
+  static const size_t dimDomain = Traits::dimDomain;
 
   LocalfunctionTupleType localFunctions(const EntityType& entity) const
   {
@@ -172,7 +172,7 @@ public:
    *  \tparam r   dimRange of the testBase
    *  \tparam rC  dimRangeRows of the testBase
    */
-  template <class R, int r, int rC>
+  template <class R, size_t r, size_t rC>
   size_t order(const LocalfunctionTupleType& localFunctions,
                const Stuff::LocalfunctionSetInterface<EntityType, DomainFieldType, dimDomain, R, r, rC>& testBase) const
   {
@@ -188,7 +188,7 @@ public:
    *  \tparam rC                  dimRangeRows of the testBase
    *  \attention ret is assumed to be zero!
    */
-  template <class IntersectionType, class R, int r, int rC>
+  template <class IntersectionType, class R, size_t r, size_t rC>
   void evaluate(const LocalfunctionTupleType& localFunctions,
                 const Stuff::LocalfunctionSetInterface<EntityType, DomainFieldType, dimDomain, R, r, rC>& testBase,
                 const IntersectionType& intersection,
@@ -210,7 +210,7 @@ public:
   typedef typename Traits::EntityType EntityType;
   typedef typename Traits::LocalfunctionTupleType LocalfunctionTupleType;
   typedef typename Traits::DomainFieldType DomainFieldType;
-  static const unsigned int dimDomain = Traits::dimDomain;
+  static const size_t dimDomain = Traits::dimDomain;
 
   LocalfunctionTupleType localFunctions(const EntityType& entity) const
   {
@@ -224,7 +224,7 @@ public:
    *  \tparam r{T,A}              dimRange of the {testBase,ansatzBase}
    *  \tparam rC{T,A}             dimRangeRows of the {testBase,ansatzBase}
    */
-  template <class R, int rT, int rCT, int rA, int rCA>
+  template <class R, size_t rT, size_t rCT, size_t rA, size_t rCA>
   size_t
   order(const LocalfunctionTupleType& localFunctions,
         const Stuff::LocalfunctionSetInterface<EntityType, DomainFieldType, dimDomain, R, rT, rCT>& testBase,
@@ -242,7 +242,7 @@ public:
    *  \tparam rC{T,A}             dimRangeRows of the {testBase*,ansatzBase*}
    *  \attention ret is assumed to be zero!
    */
-  template <class IntersectionType, class R, int rT, int rCT, int rA, int rCA>
+  template <class IntersectionType, class R, size_t rT, size_t rCT, size_t rA, size_t rCA>
   void evaluate(const LocalfunctionTupleType& localFunctions,
                 const Stuff::LocalfunctionSetInterface<EntityType, DomainFieldType, dimDomain, R, rT, rCT>& testBase,
                 const Stuff::LocalfunctionSetInterface<EntityType, DomainFieldType, dimDomain, R, rA, rCA>& ansatzBase,
@@ -265,7 +265,7 @@ public:
   typedef typename Traits::EntityType EntityType;
   typedef typename Traits::LocalfunctionTupleType LocalfunctionTupleType;
   typedef typename Traits::DomainFieldType DomainFieldType;
-  static const unsigned int dimDomain = Traits::dimDomain;
+  static const size_t dimDomain = Traits::dimDomain;
 
   LocalfunctionTupleType localFunctions(const EntityType& entity) const
   {
@@ -279,7 +279,7 @@ public:
    *  \tparam r{T,A}                dimRange of the {testBase*,ansatzBase*}
    *  \tparam rC{T,A}               dimRangeRows of the {testBase*,ansatzBase*}
    */
-  template <class R, int rT, int rCT, int rA, int rCA>
+  template <class R, size_t rT, size_t rCT, size_t rA, size_t rCA>
   size_t
   order(const LocalfunctionTupleType localFunctionsEntity, const LocalfunctionTupleType localFunctionsNeighbor,
         const Stuff::LocalfunctionSetInterface<EntityType, DomainFieldType, dimDomain, R, rT, rCT>& testBaseEntity,
@@ -310,7 +310,7 @@ public:
    *  \tparam rC{T,A}               dimRangeRows of the {testBase*,ansatzBase*}
    *  \attention entityEntityRet, entityEntityRet, entityEntityRet and neighborEntityRet are assumed to be zero!
    */
-  template <class IntersectionType, class R, int rT, int rCT, int rA, int rCA>
+  template <class IntersectionType, class R, size_t rT, size_t rCT, size_t rA, size_t rCA>
   void evaluate(
       const LocalfunctionTupleType& localFunctionsEntity, const LocalfunctionTupleType& localFunctionsNeighbor,
       const Stuff::LocalfunctionSetInterface<EntityType, DomainFieldType, dimDomain, R, rT, rCT>& testBaseEntity,
diff --git a/dune/gdt/localevaluation/product.hh b/dune/gdt/localevaluation/product.hh
index d3bb895f7..04b9ea890 100644
--- a/dune/gdt/localevaluation/product.hh
+++ b/dune/gdt/localevaluation/product.hh
@@ -44,7 +44,7 @@ public:
   typedef typename LocalizableFunctionType::DomainFieldType DomainFieldType;
   typedef typename LocalizableFunctionType::LocalfunctionType LocalfunctionType;
   typedef std::tuple<std::shared_ptr<LocalfunctionType>> LocalfunctionTupleType;
-  static const unsigned int dimDomain = LocalizableFunctionType::dimDomain;
+  static const size_t dimDomain = LocalizableFunctionType::dimDomain;
 }; // class ProductTraits
 
 
@@ -66,7 +66,7 @@ public:
   typedef typename Traits::LocalfunctionTupleType LocalfunctionTupleType;
   typedef typename Traits::EntityType EntityType;
   typedef typename Traits::DomainFieldType DomainFieldType;
-  static const unsigned int dimDomain = Traits::dimDomain;
+  static const size_t dimDomain = Traits::dimDomain;
 
   Product(const LocalizableFunctionType& inducingFunction)
     : inducingFunction_(inducingFunction)
@@ -88,7 +88,7 @@ public:
   /**
    * \brief extracts the local function and calls the correct order() method
    */
-  template <class R, int rT, int rCT>
+  template <class R, size_t rT, size_t rCT>
   size_t
   order(const LocalfunctionTupleType& localFuncs,
         const Stuff::LocalfunctionSetInterface<EntityType, DomainFieldType, dimDomain, R, rT, rCT>& testBase) const
@@ -99,7 +99,7 @@ public:
   /**
    * \brief extracts the local function and calls the correct evaluate() method
    */
-  template <class R, int rT, int rCT>
+  template <class R, size_t rT, size_t rCT>
   void evaluate(const LocalfunctionTupleType& localFuncs,
                 const Stuff::LocalfunctionSetInterface<EntityType, DomainFieldType, dimDomain, R, rT, rCT>& testBase,
                 const Dune::FieldVector<DomainFieldType, dimDomain>& localPoint, Dune::DynamicVector<R>& ret) const
@@ -114,7 +114,7 @@ public:
   /**
    * \brief extracts the local function and calls the correct evaluate() method
    */
-  template <class IntersectionType, class R, int r, int rC>
+  template <class IntersectionType, class R, size_t r, size_t rC>
   void evaluate(const LocalfunctionTupleType& localFuncs,
                 const Stuff::LocalfunctionSetInterface<EntityType, DomainFieldType, dimDomain, R, r, rC>& testBase,
                 const IntersectionType& intersection,
@@ -130,7 +130,7 @@ public:
   /**
    * \brief extracts the local function and calls the correct evaluate() method
    */
-  template <class R, int rT, int rCT, int rA, int rCA>
+  template <class R, size_t rT, size_t rCT, size_t rA, size_t rCA>
   void evaluate(const LocalfunctionTupleType& localFuncs,
                 const Stuff::LocalfunctionSetInterface<EntityType, DomainFieldType, dimDomain, R, rT, rCT>& testBase,
                 const Stuff::LocalfunctionSetInterface<EntityType, DomainFieldType, dimDomain, R, rA, rCA>& ansatzBase,
@@ -146,7 +146,7 @@ public:
   /**
    * \brief extracts the local function and calls the correct evaluate() method
    */
-  template <class IntersectionType, class R, int rT, int rCT, int rA, int rCA>
+  template <class IntersectionType, class R, size_t rT, size_t rCT, size_t rA, size_t rCA>
   void evaluate(const LocalfunctionTupleType& localFunctions_in,
                 const Stuff::LocalfunctionSetInterface<EntityType, DomainFieldType, dimDomain, R, rT, rCT>& testBase,
                 const Stuff::LocalfunctionSetInterface<EntityType, DomainFieldType, dimDomain, R, rA, rCA>& ansatzBase,
@@ -163,7 +163,7 @@ public:
   /**
    * \brief extracts the local function and calls the correct order() method
    */
-  template <class R, int rT, int rCT, int rA, int rCA>
+  template <class R, size_t rT, size_t rCT, size_t rA, size_t rCA>
   size_t
   order(const LocalfunctionTupleType& localFuncs,
         const Stuff::LocalfunctionSetInterface<EntityType, DomainFieldType, dimDomain, R, rT, rCT>& testBase,
@@ -180,7 +180,7 @@ public:
    * \note   for `LocalEvaluation::Codim0Interface< ..., 1 >`
    * \return localFunction.order() + testBase.order()
    */
-  template <class R, int rL, int rCL, int rT, int rCT>
+  template <class R, size_t rL, size_t rCL, size_t rT, size_t rCT>
   size_t
   order(const Stuff::LocalfunctionInterface<EntityType, DomainFieldType, dimDomain, R, rL, rCL>& localFunction,
         const Stuff::LocalfunctionSetInterface<EntityType, DomainFieldType, dimDomain, R, rT, rCT>& testBase) const
@@ -194,7 +194,7 @@ public:
    *         - `LocalEvaluation::Codim1Interface< ..., 2 >`
    * \return localFunction.order() + testBase.order() + ansatzBase.order()
    */
-  template <class R, int rL, int rCL, int rT, int rCT, int rA, int rCA>
+  template <class R, size_t rL, size_t rCL, size_t rT, size_t rCT, size_t rA, size_t rCA>
   size_t
   order(const Stuff::LocalfunctionInterface<EntityType, DomainFieldType, dimDomain, R, rL, rCL>& localFunction,
         const Stuff::LocalfunctionSetInterface<EntityType, DomainFieldType, dimDomain, R, rT, rCT>& testBase,
@@ -231,7 +231,7 @@ public:
    * \brief Computes a product evaluation for a scalar local function and scalar or vector valued basefunctionsets.
    * \note  for `LocalEvaluation::Codim0Interface< ..., 2 >`
    */
-  template <class R, int r>
+  template <class R, size_t r>
   void evaluate(const Stuff::LocalfunctionInterface<EntityType, DomainFieldType, dimDomain, R, 1, 1>& localFunction,
                 const Stuff::LocalfunctionSetInterface<EntityType, DomainFieldType, dimDomain, R, r, 1>& testBase,
                 const Stuff::LocalfunctionSetInterface<EntityType, DomainFieldType, dimDomain, R, r, 1>& ansatzBase,
@@ -281,7 +281,7 @@ public:
    * \brief Computes a product evaluation for a scalar local function and scalar or vector valued basefunctionsets.
    * \note  for `LocalEvaluation::Codim1Interface< ..., 2 >`
    */
-  template <class IntersectionType, class R, int r>
+  template <class IntersectionType, class R, size_t r>
   void evaluate(const Stuff::LocalfunctionInterface<EntityType, DomainFieldType, dimDomain, R, 1, 1>& localFunction,
                 const Stuff::LocalfunctionSetInterface<EntityType, DomainFieldType, dimDomain, R, r, 1>& testBase,
                 const Stuff::LocalfunctionSetInterface<EntityType, DomainFieldType, dimDomain, R, r, 1>& ansatzBase,
diff --git a/dune/gdt/localevaluation/sipdg.hh b/dune/gdt/localevaluation/sipdg.hh
index 120a4cddc..09953846e 100644
--- a/dune/gdt/localevaluation/sipdg.hh
+++ b/dune/gdt/localevaluation/sipdg.hh
@@ -64,7 +64,7 @@ public:
   typedef typename LocalizableFunctionType::DomainFieldType DomainFieldType;
   typedef typename LocalizableFunctionType::LocalfunctionType LocalfunctionType;
   typedef std::tuple<std::shared_ptr<LocalfunctionType>> LocalfunctionTupleType;
-  static const unsigned int dimDomain = LocalizableFunctionType::dimDomain;
+  static const size_t dimDomain = LocalizableFunctionType::dimDomain;
 }; // class InnerTraits
 
 
@@ -81,7 +81,7 @@ public:
   typedef typename LocalizableFunctionType::DomainFieldType DomainFieldType;
   typedef typename LocalizableFunctionType::LocalfunctionType LocalfunctionType;
   typedef std::tuple<std::shared_ptr<LocalfunctionType>> LocalfunctionTupleType;
-  static const unsigned int dimDomain = LocalizableFunctionType::dimDomain;
+  static const size_t dimDomain = LocalizableFunctionType::dimDomain;
 }; // class BoundaryLHSTraits
 
 
@@ -111,7 +111,7 @@ public:
       LocalfunctionTupleType;
   typedef typename LocalizableDiffusionFunctionType::EntityType EntityType;
   typedef typename LocalizableDiffusionFunctionType::DomainFieldType DomainFieldType;
-  static const unsigned int dimDomain = LocalizableDiffusionFunctionType::dimDomain;
+  static const size_t dimDomain = LocalizableDiffusionFunctionType::dimDomain;
 }; // class BoundaryRHSTraits
 
 
@@ -192,7 +192,7 @@ public:
   typedef typename Traits::LocalfunctionTupleType LocalfunctionTupleType;
   typedef typename Traits::EntityType EntityType;
   typedef typename Traits::DomainFieldType DomainFieldType;
-  static const unsigned int dimDomain = Traits::dimDomain;
+  static const size_t dimDomain = Traits::dimDomain;
 
   Inner(const LocalizableFunctionType& inducingFunction, const double beta = internal::default_beta(dimDomain))
     : inducingFunction_(inducingFunction)
@@ -211,7 +211,7 @@ public:
   /**
    * \brief extracts the local functions and calls the correct order() method
    */
-  template <class R, int rT, int rCT, int rA, int rCA>
+  template <class R, size_t rT, size_t rCT, size_t rA, size_t rCA>
   size_t
   order(const LocalfunctionTupleType& localFunctionsEntity, const LocalfunctionTupleType& localFunctionsNeighbor,
         const Stuff::LocalfunctionSetInterface<EntityType, DomainFieldType, dimDomain, R, rT, rCT>& testBaseEntity,
@@ -233,7 +233,7 @@ public:
   /**
    * \brief extracts the local functions and calls the correct evaluate() method
    */
-  template <class IntersectionType, class R, int rT, int rCT, int rA, int rCA>
+  template <class IntersectionType, class R, size_t rT, size_t rCT, size_t rA, size_t rCA>
   void evaluate(
       const LocalfunctionTupleType& localFunctionsEntity, const LocalfunctionTupleType& localFunctionsNeighbor,
       const Stuff::LocalfunctionSetInterface<EntityType, DomainFieldType, dimDomain, R, rT, rCT>& testBaseEntity,
@@ -264,7 +264,7 @@ public:
   /// \name Actual implementation of order
   /// \{
 
-  template <class R, int rL, int rCL, int rT, int rCT, int rA, int rCA>
+  template <class R, size_t rL, size_t rCL, size_t rT, size_t rCT, size_t rA, size_t rCA>
   size_t
   order(const Stuff::LocalfunctionInterface<EntityType, DomainFieldType, dimDomain, R, rL, rCL>& localFunctionEntity,
         const Stuff::LocalfunctionInterface<EntityType, DomainFieldType, dimDomain, R, rL, rCL>& localFunctionNeighbor,
@@ -421,7 +421,7 @@ public:
   typedef typename Traits::LocalfunctionTupleType LocalfunctionTupleType;
   typedef typename Traits::EntityType EntityType;
   typedef typename Traits::DomainFieldType DomainFieldType;
-  static const unsigned int dimDomain = Traits::dimDomain;
+  static const size_t dimDomain = Traits::dimDomain;
 
   BoundaryLHS(const LocalizableFunctionType& inducingFunction, const double beta = internal::default_beta(dimDomain))
     : inducingFunction_(inducingFunction)
@@ -440,7 +440,7 @@ public:
   /**
    * \brief extracts the local functions and calls the correct order() method
    */
-  template <class R, int rT, int rCT, int rA, int rCA>
+  template <class R, size_t rT, size_t rCT, size_t rA, size_t rCA>
   size_t
   order(const LocalfunctionTupleType localFuncs,
         const Stuff::LocalfunctionSetInterface<EntityType, DomainFieldType, dimDomain, R, rT, rCT>& testBase,
@@ -452,7 +452,7 @@ public:
   /**
    * \brief extracts the local functions and calls the correct evaluate() method
    */
-  template <class IntersectionType, class R, int rT, int rCT, int rA, int rCA>
+  template <class IntersectionType, class R, size_t rT, size_t rCT, size_t rA, size_t rCA>
   void evaluate(const LocalfunctionTupleType localFuncs,
                 const Stuff::LocalfunctionSetInterface<EntityType, DomainFieldType, dimDomain, R, rT, rCT>& testBase,
                 const Stuff::LocalfunctionSetInterface<EntityType, DomainFieldType, dimDomain, R, rA, rCA>& ansatzBase,
@@ -469,7 +469,7 @@ public:
   /**
    * \return localFunction.order() + testBase.order() + ansatzBase.order();
    */
-  template <class R, int rL, int rCL, int rT, int rCT, int rA, int rCA>
+  template <class R, size_t rL, size_t rCL, size_t rT, size_t rCT, size_t rA, size_t rCA>
   size_t
   order(const Stuff::LocalfunctionInterface<EntityType, DomainFieldType, dimDomain, R, rL, rCL>& localFunction,
         const Stuff::LocalfunctionSetInterface<EntityType, DomainFieldType, dimDomain, R, rT, rCT>& testBase,
@@ -550,7 +550,7 @@ public:
   typedef typename Traits::LocalfunctionTupleType LocalfunctionTupleType;
   typedef typename Traits::EntityType EntityType;
   typedef typename Traits::DomainFieldType DomainFieldType;
-  static const unsigned int dimDomain = Traits::dimDomain;
+  static const size_t dimDomain = Traits::dimDomain;
 
   BoundaryRHS(const LocalizableDiffusionFunctionType& diffusion, const LocalizableDirichletFunctionType& dirichlet,
               const double beta = internal::default_beta(dimDomain))
@@ -571,7 +571,7 @@ public:
   /**
    * \brief extracts the local functions and calls the correct order() method
    */
-  template <class R, int r, int rC>
+  template <class R, size_t r, size_t rC>
   size_t order(const LocalfunctionTupleType localFuncs,
                const Stuff::LocalfunctionSetInterface<EntityType, DomainFieldType, dimDomain, R, r, rC>& testBase) const
   {
@@ -583,7 +583,7 @@ public:
   /**
    * \brief extracts the local functions and calls the correct evaluate() method
    */
-  template <class IntersectionType, class R, int r, int rC>
+  template <class IntersectionType, class R, size_t r, size_t rC>
   void evaluate(const LocalfunctionTupleType localFuncs,
                 const Stuff::LocalfunctionSetInterface<EntityType, DomainFieldType, dimDomain, R, r, rC>& testBase,
                 const IntersectionType& intersection,
@@ -601,7 +601,7 @@ public:
   /**
    *  \return std::max(testOrder + dirichletOrder, diffusionOrder + testGradientOrder + dirichletOrder);
    */
-  template <class R, int rLF, int rCLF, int rLR, int rCLR, int rT, int rCT>
+  template <class R, size_t rLF, size_t rCLF, size_t rLR, size_t rCLR, size_t rT, size_t rCT>
   size_t
   order(const Stuff::LocalfunctionInterface<EntityType, DomainFieldType, dimDomain, R, rLF, rCLF>& localDiffusion,
         const Stuff::LocalfunctionInterface<EntityType, DomainFieldType, dimDomain, R, rLR, rCLR>& localDirichlet,
diff --git a/dune/gdt/localevaluation/swipdg.hh b/dune/gdt/localevaluation/swipdg.hh
index 3d19b008d..b257861b8 100644
--- a/dune/gdt/localevaluation/swipdg.hh
+++ b/dune/gdt/localevaluation/swipdg.hh
@@ -82,7 +82,7 @@ public:
                      std::shared_ptr<LocalDiffusionTensorFunctionType>> LocalfunctionTupleType;
   typedef typename LocalizableDiffusionFactorFunctionType::EntityType EntityType;
   typedef typename LocalizableDiffusionFactorFunctionType::DomainFieldType DomainFieldType;
-  static const unsigned int dimDomain = LocalizableDiffusionFactorFunctionType::dimDomain;
+  static const size_t dimDomain = LocalizableDiffusionFactorFunctionType::dimDomain;
 }; // class InnerTraits
 
 
@@ -99,7 +99,7 @@ public:
   typedef typename LocalizableFunctionType::DomainFieldType DomainFieldType;
   typedef typename LocalizableFunctionType::LocalfunctionType LocalfunctionType;
   typedef std::tuple<std::shared_ptr<LocalfunctionType>> LocalfunctionTupleType;
-  static const unsigned int dimDomain = LocalizableFunctionType::dimDomain;
+  static const size_t dimDomain = LocalizableFunctionType::dimDomain;
 }; // class InnerTraits< ..., void >
 
 
@@ -127,7 +127,7 @@ public:
                      std::shared_ptr<LocalDiffusionTensorFunctionType>> LocalfunctionTupleType;
   typedef typename LocalizableDiffusionFactorFunctionType::EntityType EntityType;
   typedef typename LocalizableDiffusionFactorFunctionType::DomainFieldType DomainFieldType;
-  static const unsigned int dimDomain = LocalizableDiffusionFactorFunctionType::dimDomain;
+  static const size_t dimDomain = LocalizableDiffusionFactorFunctionType::dimDomain;
 }; // class InnerPenaltyTraits
 
 
@@ -155,7 +155,7 @@ public:
                      std::shared_ptr<LocalDiffusionTensorFunctionType>> LocalfunctionTupleType;
   typedef typename LocalizableDiffusionFactorFunctionType::EntityType EntityType;
   typedef typename LocalizableDiffusionFactorFunctionType::DomainFieldType DomainFieldType;
-  static const unsigned int dimDomain = LocalizableDiffusionFactorFunctionType::dimDomain;
+  static const size_t dimDomain = LocalizableDiffusionFactorFunctionType::dimDomain;
 }; // class BoundaryLHSTraits
 
 
@@ -183,7 +183,7 @@ public:
                      std::shared_ptr<LocalDiffusionTensorFunctionType>> LocalfunctionTupleType;
   typedef typename LocalizableDiffusionFactorFunctionType::EntityType EntityType;
   typedef typename LocalizableDiffusionFactorFunctionType::DomainFieldType DomainFieldType;
-  static const unsigned int dimDomain = LocalizableDiffusionFactorFunctionType::dimDomain;
+  static const size_t dimDomain = LocalizableDiffusionFactorFunctionType::dimDomain;
 }; // class BoundaryLHSPenaltyTraits
 
 
@@ -200,7 +200,7 @@ public:
   typedef typename LocalizableFunctionType::DomainFieldType DomainFieldType;
   typedef typename LocalizableFunctionType::LocalfunctionType LocalfunctionType;
   typedef std::tuple<std::shared_ptr<LocalfunctionType>> LocalfunctionTupleType;
-  static const unsigned int dimDomain = LocalizableFunctionType::dimDomain;
+  static const size_t dimDomain = LocalizableFunctionType::dimDomain;
 }; // class BoundaryLHSTraits< ..., void >
 
 
@@ -236,7 +236,7 @@ public:
                      std::shared_ptr<LocalDirichletFunctionType>> LocalfunctionTupleType;
   typedef typename LocalizableDiffusionFactorFunctionType::EntityType EntityType;
   typedef typename LocalizableDiffusionFactorFunctionType::DomainFieldType DomainFieldType;
-  static const unsigned int dimDomain = LocalizableDiffusionFactorFunctionType::dimDomain;
+  static const size_t dimDomain = LocalizableDiffusionFactorFunctionType::dimDomain;
 }; // class BoundaryRHSTraits
 
 
@@ -266,7 +266,7 @@ public:
       LocalfunctionTupleType;
   typedef typename LocalizableDiffusionFunctionType::EntityType EntityType;
   typedef typename LocalizableDiffusionFunctionType::DomainFieldType DomainFieldType;
-  static const unsigned int dimDomain = LocalizableDiffusionFunctionType::dimDomain;
+  static const size_t dimDomain = LocalizableDiffusionFunctionType::dimDomain;
 }; // class BoundaryRHSTraits< ..., void >
 
 
@@ -286,7 +286,7 @@ public:
   typedef typename Traits::LocalfunctionTupleType LocalfunctionTupleType;
   typedef typename Traits::EntityType EntityType;
   typedef typename Traits::DomainFieldType DomainFieldType;
-  static const unsigned int dimDomain = Traits::dimDomain;
+  static const size_t dimDomain = Traits::dimDomain;
 
   Inner(const LocalizableFunctionType& inducingFunction,
         const double beta = SIPDG::internal::default_beta(LocalizableFunctionType::dimDomain))
@@ -306,7 +306,7 @@ public:
   /**
    * \brief extracts the local functions and calls the correct order() method
    */
-  template <class R, int rT, int rCT, int rA, int rCA>
+  template <class R, size_t rT, size_t rCT, size_t rA, size_t rCA>
   size_t
   order(const LocalfunctionTupleType& localFunctionsEntity, const LocalfunctionTupleType& localFunctionsNeighbor,
         const Stuff::LocalfunctionSetInterface<EntityType, DomainFieldType, dimDomain, R, rT, rCT>& testBaseEntity,
@@ -328,7 +328,7 @@ public:
   /**
    * \brief extracts the local functions and calls the correct evaluate() method
    */
-  template <class IntersectionType, class R, int rT, int rCT, int rA, int rCA>
+  template <class IntersectionType, class R, size_t rT, size_t rCT, size_t rA, size_t rCA>
   void evaluate(
       const LocalfunctionTupleType& localFunctionsEntity, const LocalfunctionTupleType& localFunctionsNeighbor,
       const Stuff::LocalfunctionSetInterface<EntityType, DomainFieldType, dimDomain, R, rT, rCT>& testBaseEntity,
@@ -359,7 +359,7 @@ public:
   /// \name Actual implementation of order
   /// \{
 
-  template <class R, int rL, int rCL, int rT, int rCT, int rA, int rCA>
+  template <class R, size_t rL, size_t rCL, size_t rT, size_t rCT, size_t rA, size_t rCA>
   size_t
   order(const Stuff::LocalfunctionInterface<EntityType, DomainFieldType, dimDomain, R, rL, rCL>& localFunctionEntity,
         const Stuff::LocalfunctionInterface<EntityType, DomainFieldType, dimDomain, R, rL, rCL>& localFunctionNeighbor,
@@ -520,7 +520,7 @@ public:
   typedef typename Traits::LocalfunctionTupleType LocalfunctionTupleType;
   typedef typename Traits::EntityType EntityType;
   typedef typename Traits::DomainFieldType DomainFieldType;
-  static const unsigned int dimDomain = Traits::dimDomain;
+  static const size_t dimDomain = Traits::dimDomain;
 
   BoundaryLHS(const LocalizableFunctionType& inducingFunction,
               const double beta = SIPDG::internal::default_beta(dimDomain))
@@ -540,7 +540,7 @@ public:
   /**
    * \brief extracts the local functions and calls the correct order() method
    */
-  template <class R, int rT, int rCT, int rA, int rCA>
+  template <class R, size_t rT, size_t rCT, size_t rA, size_t rCA>
   size_t
   order(const LocalfunctionTupleType localFuncs,
         const Stuff::LocalfunctionSetInterface<EntityType, DomainFieldType, dimDomain, R, rT, rCT>& testBase,
@@ -552,7 +552,7 @@ public:
   /**
    * \brief extracts the local functions and calls the correct evaluate() method
    */
-  template <class IntersectionType, class R, int rT, int rCT, int rA, int rCA>
+  template <class IntersectionType, class R, size_t rT, size_t rCT, size_t rA, size_t rCA>
   void evaluate(const LocalfunctionTupleType localFuncs,
                 const Stuff::LocalfunctionSetInterface<EntityType, DomainFieldType, dimDomain, R, rT, rCT>& testBase,
                 const Stuff::LocalfunctionSetInterface<EntityType, DomainFieldType, dimDomain, R, rA, rCA>& ansatzBase,
@@ -569,7 +569,7 @@ public:
   /**
    *  \return localFunction.order() + testBase.order() + ansatzBase.order()
    */
-  template <class R, int rL, int rCL, int rT, int rCT, int rA, int rCA>
+  template <class R, size_t rL, size_t rCL, size_t rT, size_t rCT, size_t rA, size_t rCA>
   size_t
   order(const Stuff::LocalfunctionInterface<EntityType, DomainFieldType, dimDomain, R, rL, rCL>& localFunction,
         const Stuff::LocalfunctionSetInterface<EntityType, DomainFieldType, dimDomain, R, rT, rCT>& testBase,
@@ -650,7 +650,7 @@ public:
   typedef typename Traits::LocalfunctionTupleType LocalfunctionTupleType;
   typedef typename Traits::EntityType EntityType;
   typedef typename Traits::DomainFieldType DomainFieldType;
-  static const unsigned int dimDomain = Traits::dimDomain;
+  static const size_t dimDomain = Traits::dimDomain;
 
   BoundaryRHS(const LocalizableDiffusionFunctionType& diffusion, const LocalizableDirichletFunctionType& dirichlet,
               const double beta = SIPDG::internal::default_beta(dimDomain))
@@ -671,7 +671,7 @@ public:
   /**
    * \brief extracts the local functions and calls the correct order() method
    */
-  template <class R, int r, int rC>
+  template <class R, size_t r, size_t rC>
   size_t order(const LocalfunctionTupleType localFuncs,
                const Stuff::LocalfunctionSetInterface<EntityType, DomainFieldType, dimDomain, R, r, rC>& testBase) const
   {
@@ -683,7 +683,7 @@ public:
   /**
    * \brief extracts the local functions and calls the correct evaluate() method
    */
-  template <class IntersectionType, class R, int r, int rC>
+  template <class IntersectionType, class R, size_t r, size_t rC>
   void evaluate(const LocalfunctionTupleType localFuncs,
                 const Stuff::LocalfunctionSetInterface<EntityType, DomainFieldType, dimDomain, R, r, rC>& testBase,
                 const IntersectionType& intersection,
@@ -701,7 +701,7 @@ public:
   /**
    *  \return std::max(testOrder + dirichletOrder, diffusionOrder + testGradientOrder + dirichletOrder);
    */
-  template <class R, int rLF, int rCLF, int rLR, int rCLR, int rT, int rCT>
+  template <class R, size_t rLF, size_t rCLF, size_t rLR, size_t rCLR, size_t rT, size_t rCT>
   size_t
   order(const Stuff::LocalfunctionInterface<EntityType, DomainFieldType, dimDomain, R, rLF, rCLF>& localDiffusion,
         const Stuff::LocalfunctionInterface<EntityType, DomainFieldType, dimDomain, R, rLR, rCLR>& localDirichlet,
diff --git a/dune/gdt/localfunctional/codim0.hh b/dune/gdt/localfunctional/codim0.hh
index b545d46c8..20939b8db 100644
--- a/dune/gdt/localfunctional/codim0.hh
+++ b/dune/gdt/localfunctional/codim0.hh
@@ -92,7 +92,7 @@ public:
    *  \tparam T   Traits of the BaseFunctionSetInterface implementation, representing the type of the testBase
    *  \attention  ret is assumed to be zero!
    */
-  template <class E, class D, int d, class R, int r, int rC>
+  template <class E, class D, size_t d, class R, size_t r, size_t rC>
   void apply(const Stuff::LocalfunctionSetInterface<E, D, d, R, r, rC>& testBase, Dune::DynamicVector<R>& ret,
              std::vector<Dune::DynamicVector<R>>& tmpLocalVectors) const
   {
diff --git a/dune/gdt/localfunctional/codim1.hh b/dune/gdt/localfunctional/codim1.hh
index 5a563ffd8..53040300a 100644
--- a/dune/gdt/localfunctional/codim1.hh
+++ b/dune/gdt/localfunctional/codim1.hh
@@ -87,7 +87,7 @@ public:
     return numTmpObjectsRequired_;
   }
 
-  template <class E, class IntersectionType, class D, int d, class R, int r, int rC>
+  template <class E, class IntersectionType, class D, size_t d, class R, size_t r, size_t rC>
   void apply(const Stuff::LocalfunctionSetInterface<E, D, d, R, r, rC>& testBase, const IntersectionType& intersection,
              Dune::DynamicVector<R>& ret, std::vector<Dune::DynamicVector<R>>& tmpLocalVectors) const
   {
diff --git a/dune/gdt/localfunctional/interface.hh b/dune/gdt/localfunctional/interface.hh
index 4db9b6d56..182deb940 100644
--- a/dune/gdt/localfunctional/interface.hh
+++ b/dune/gdt/localfunctional/interface.hh
@@ -40,7 +40,7 @@ public:
    *  \tparam r   dimRange
    *  \tparam rC  dimRangeCols
    */
-  template <class T, class D, int d, class R, int r, int rC>
+  template <class T, class D, size_t d, class R, size_t r, size_t rC>
   void apply(const BaseFunctionSetInterface<T, D, d, R, r, rC>& testBase, Dune::DynamicVector<R>& ret,
              std::vector<Dune::DynamicVector<R>>& tmpLocalVectors) const
   {
@@ -71,7 +71,7 @@ public:
    *  \tparam r                 dimRange of the of the testBase
    *  \tparam rC                dimRangeCols of the testBase
    */
-  template <class T, class IntersectionType, class D, int d, class R, int r, int rC>
+  template <class T, class IntersectionType, class D, size_t d, class R, size_t r, size_t rC>
   void apply(const BaseFunctionSetInterface<T, D, d, R, r, rC>& testBase, const IntersectionType& intersection,
              Dune::DynamicVector<R>& ret, std::vector<Dune::DynamicVector<R>>& tmpLocalVectors) const
   {
diff --git a/dune/gdt/localoperator/codim0.hh b/dune/gdt/localoperator/codim0.hh
index 868707fca..c79ba946c 100644
--- a/dune/gdt/localoperator/codim0.hh
+++ b/dune/gdt/localoperator/codim0.hh
@@ -87,7 +87,7 @@ public:
     return numTmpObjectsRequired_;
   }
 
-  template <class E, class D, int d, class R, int rT, int rCT, int rA, int rCA>
+  template <class E, class D, size_t d, class R, size_t rT, size_t rCT, size_t rA, size_t rCA>
   void apply(const Stuff::LocalfunctionSetInterface<E, D, d, R, rT, rCT>& testBase,
              const Stuff::LocalfunctionSetInterface<E, D, d, R, rA, rCA>& ansatzBase, Dune::DynamicMatrix<R>& ret,
              std::vector<Dune::DynamicMatrix<R>>& tmpLocalMatrices) const
diff --git a/dune/gdt/localoperator/codim1.hh b/dune/gdt/localoperator/codim1.hh
index 8811ee25a..0e0cdc767 100644
--- a/dune/gdt/localoperator/codim1.hh
+++ b/dune/gdt/localoperator/codim1.hh
@@ -85,14 +85,14 @@ public:
   }
 
   template <class... Args>
-  explicit Codim1CouplingIntegral(const size_t over_integrate, Args&&... args)
+  explicit Codim1CouplingIntegral(const int over_integrate, Args&&... args)
     : evaluation_(std::forward<Args>(args)...)
     , over_integrate_(over_integrate)
   {
   }
 
   template <class... Args>
-  explicit Codim1CouplingIntegral(const int over_integrate, Args&&... args)
+  explicit Codim1CouplingIntegral(const size_t over_integrate, Args&&... args)
     : evaluation_(std::forward<Args>(args)...)
     , over_integrate_(boost::numeric_cast<size_t>(over_integrate))
   {
@@ -103,7 +103,8 @@ public:
     return numTmpObjectsRequired_;
   }
 
-  template <class E, class N, class IntersectionType, class D, int d, class R, int rT, int rCT, int rA, int rCA>
+  template <class E, class N, class IntersectionType, class D, size_t d, class R, size_t rT, size_t rCT, size_t rA,
+            size_t rCA>
   void apply(const Stuff::LocalfunctionSetInterface<E, D, d, R, rT, rCT>& entityTestBase,
              const Stuff::LocalfunctionSetInterface<E, D, d, R, rA, rCA>& entityAnsatzBase,
              const Stuff::LocalfunctionSetInterface<N, D, d, R, rT, rCT>& neighborTestBase,
@@ -232,14 +233,14 @@ public:
   }
 
   template <class... Args>
-  Codim1BoundaryIntegral(const size_t over_integrate, Args&&... args)
+  Codim1BoundaryIntegral(const int over_integrate, Args&&... args)
     : evaluation_(std::forward<Args>(args)...)
     , over_integrate_(over_integrate)
   {
   }
 
   template <class... Args>
-  Codim1BoundaryIntegral(const int over_integrate, Args&&... args)
+  Codim1BoundaryIntegral(const size_t over_integrate, Args&&... args)
     : evaluation_(std::forward<Args>(args)...)
     , over_integrate_(boost::numeric_cast<size_t>(over_integrate))
   {
@@ -250,7 +251,7 @@ public:
     return numTmpObjectsRequired_;
   }
 
-  template <class E, class IntersectionType, class D, int d, class R, int rT, int rCT, int rA, int rCA>
+  template <class E, class IntersectionType, class D, size_t d, class R, size_t rT, size_t rCT, size_t rA, size_t rCA>
   void apply(const Stuff::LocalfunctionSetInterface<E, D, d, R, rT, rCT>& testBase,
              const Stuff::LocalfunctionSetInterface<E, D, d, R, rA, rCA>& ansatzBase,
              const IntersectionType& intersection, Dune::DynamicMatrix<R>& ret,
diff --git a/dune/gdt/localoperator/interface.hh b/dune/gdt/localoperator/interface.hh
index 7c890f6a3..51e22e0f0 100644
--- a/dune/gdt/localoperator/interface.hh
+++ b/dune/gdt/localoperator/interface.hh
@@ -41,7 +41,7 @@ public:
    *  \tparam r{T,A}  dimRange of the of the {testBase,ansatzBase}
    *  \tparam rC{T,a} dimRangeCols of the {testBase,ansatzBase}
    */
-  template <class T, class A, class D, int d, class R, int rT, int rCT, int rA, int rCA>
+  template <class T, class A, class D, size_t d, class R, size_t rT, size_t rCT, size_t rA, size_t rCA>
   void apply(const BaseFunctionSetInterface<T, D, d, R, rT, rCT>& testBase,
              const BaseFunctionSetInterface<A, D, d, R, rA, rCA>& ansatzBase, Dune::DynamicMatrix<R>& ret,
              std::vector<Dune::DynamicMatrix<R>>& tmpLocalMatrices) const
@@ -76,8 +76,8 @@ public:
    *  \tparam r{T,A}  dimRange of the of the {testBase*,ansatzBase*}
    *  \tparam rC{T,a} dimRangeCols of the {testBase*,ansatzBase*}
    */
-  template <class TE, class AE, class TN, class AN, class IntersectionType, class D, int d, class R, int rT, int rCT,
-            int rA, int rCA>
+  template <class TE, class AE, class TN, class AN, class IntersectionType, class D, size_t d, class R, size_t rT,
+            size_t rCT, size_t rA, size_t rCA>
   void apply(const BaseFunctionSetInterface<TE, D, d, R, rT, rCT>& testBaseEntity,
              const BaseFunctionSetInterface<AE, D, d, R, rA, rCA>& ansatzBaseEntity,
              const BaseFunctionSetInterface<TN, D, d, R, rT, rCT>& testBaseNeighbor,
@@ -123,7 +123,8 @@ public:
    *  \tparam r{T,A}  dimRange of the of the {testBase,ansatzBase}
    *  \tparam rC{T,a} dimRangeCols of the {testBase,ansatzBase}
    */
-  template <class T, class A, class IntersectionType, class D, int d, class R, int rT, int rCT, int rA, int rCA>
+  template <class T, class A, class IntersectionType, class D, size_t d, class R, size_t rT, size_t rCT, size_t rA,
+            size_t rCA>
   void apply(const BaseFunctionSetInterface<T, D, d, R, rT, rCT>& testBase,
              const BaseFunctionSetInterface<A, D, d, R, rA, rCA>& ansatzBase, const IntersectionType& intersection,
              Dune::DynamicMatrix<R>& ret, std::vector<Dune::DynamicMatrix<R>>& tmpLocalMatrices) const
diff --git a/dune/gdt/mapper/default/fv.hh b/dune/gdt/mapper/default/fv.hh
index 93fdb058f..2a587a9a3 100644
--- a/dune/gdt/mapper/default/fv.hh
+++ b/dune/gdt/mapper/default/fv.hh
@@ -21,7 +21,7 @@ namespace Mapper {
 
 
 // forward
-template <class GridViewImp, int rangeDim = 1, int rangeDimCols = 1>
+template <class GridViewImp, size_t rangeDim = 1, size_t rangeDimCols = 1>
 class FiniteVolume
 {
   static_assert(AlwaysFalse<GridViewImp>::value, "Not available for these dimensions!");
@@ -31,7 +31,7 @@ class FiniteVolume
 namespace internal {
 
 
-template <class GridViewImp, int rangeDim, int rangeDimCols>
+template <class GridViewImp, size_t rangeDim, size_t rangeDimCols>
 class FiniteVolumeTraits
 {
   static_assert(rangeDim >= 1, "Really?");
@@ -104,12 +104,12 @@ private:
 }; // class FiniteVolume< ..., 1, 1 >
 
 
-template <class GridViewImp, int rangeDim>
+template <class GridViewImp, size_t rangeDim>
 class FiniteVolume<GridViewImp, rangeDim, 1>
     : public MapperInterface<internal::FiniteVolumeTraits<GridViewImp, rangeDim, 1>>
 {
   typedef MapperInterface<internal::FiniteVolumeTraits<GridViewImp, rangeDim, 1>> InterfaceType;
-  static const unsigned int dimRange = rangeDim;
+  static const size_t dimRange = rangeDim;
 
 public:
   typedef internal::FiniteVolumeTraits<GridViewImp, rangeDim, 1> Traits;
diff --git a/dune/gdt/mapper/fem.hh b/dune/gdt/mapper/fem.hh
index c6e34e1a5..48087814d 100644
--- a/dune/gdt/mapper/fem.hh
+++ b/dune/gdt/mapper/fem.hh
@@ -99,9 +99,9 @@ private:
     {
     }
 
-    void operator()(int localDoF, int globalDoF)
+    void operator()(size_t localDoF, size_t globalDoF)
     {
-      assert(localDoF < int(globalIndices_.size()));
+      assert(localDoF < globalIndices_.size());
       globalIndices_[localDoF] = globalDoF;
     }
 
@@ -184,9 +184,9 @@ private:
     {
     }
 
-    void operator()(int localDoF, int globalDoF)
+    void operator()(size_t localDoF, size_t globalDoF)
     {
-      assert(localDoF < int(globalIndices_.size()));
+      assert(localDoF < globalIndices_.size());
       globalIndices_[localDoF] = globalDoF;
     }
 
diff --git a/dune/gdt/operators/darcy.hh b/dune/gdt/operators/darcy.hh
index a4502223f..ec17e7a87 100644
--- a/dune/gdt/operators/darcy.hh
+++ b/dune/gdt/operators/darcy.hh
@@ -69,7 +69,7 @@ public:
   typedef typename Traits::FieldType FieldType;
   typedef typename GridViewType::template Codim<0>::Entity EntityType;
   typedef typename GridViewType::ctype DomainFieldType;
-  static const unsigned int dimDomain = GridViewType::dimension;
+  static const size_t dimDomain = GridViewType::dimension;
 
   Darcy(const GridViewType& grd_vw, const FunctionImp& function)
     : grid_view_(grd_vw)
@@ -82,7 +82,7 @@ public:
    * \note  See redirect_apply for the implementation (depending on the type of the range space).
    * \sa    redirect_apply
    */
-  template <class S, class V, int r, int rC>
+  template <class S, class V, size_t r, size_t rC>
   void
   apply(const Stuff::LocalizableFunctionInterface<EntityType, DomainFieldType, dimDomain, FieldType, r, rC>& source,
         DiscreteFunction<S, V>& range) const
diff --git a/dune/gdt/operators/fluxreconstruction.hh b/dune/gdt/operators/fluxreconstruction.hh
index b5c1349f1..fc3d8984c 100644
--- a/dune/gdt/operators/fluxreconstruction.hh
+++ b/dune/gdt/operators/fluxreconstruction.hh
@@ -45,7 +45,7 @@ class DiffusiveFluxReconstruction<GridViewType, LocalizableFunctionType, void>
 public:
   typedef typename GridViewType::template Codim<0>::Entity EntityType;
   typedef typename GridViewType::ctype DomainFieldType;
-  static const unsigned int dimDomain = GridViewType::dimension;
+  static const size_t dimDomain = GridViewType::dimension;
   typedef typename LocalizableFunctionType::RangeFieldType FieldType;
   typedef typename LocalizableFunctionType::DomainType DomainType;
 
diff --git a/dune/gdt/operators/interfaces.hh b/dune/gdt/operators/interfaces.hh
index f411b2abf..493b3b6c1 100644
--- a/dune/gdt/operators/interfaces.hh
+++ b/dune/gdt/operators/interfaces.hh
@@ -74,7 +74,7 @@ class LocalizableOperatorInterface : public Stuff::CRTPInterface<LocalizableOper
 
   typedef typename GridViewType::template Codim<0>::Entity EntityType;
   typedef typename GridViewType::ctype DomainFieldType;
-  static const unsigned int dimDomain = GridViewType::dimension;
+  static const size_t dimDomain = GridViewType::dimension;
 
 private:
   static_assert(Stuff::is_localizable_function<SourceType>::value,
diff --git a/dune/gdt/operators/oswaldinterpolation.hh b/dune/gdt/operators/oswaldinterpolation.hh
index 6a8467f29..e1149f8db 100644
--- a/dune/gdt/operators/oswaldinterpolation.hh
+++ b/dune/gdt/operators/oswaldinterpolation.hh
@@ -56,7 +56,7 @@ public:
   typedef internal::OswaldInterpolationTraits<GridViewImp, FieldImp> Traits;
   typedef typename Traits::GridViewType GridViewType;
   typedef typename Traits::FieldType FieldType;
-  static const unsigned int dimDomain = GridViewType::dimension;
+  static const size_t dimDomain = GridViewType::dimension;
 
   OswaldInterpolation(const GridViewType& grd_vw, const bool zero_boundary = true)
     : grid_view_(grd_vw)
@@ -144,7 +144,8 @@ private:
           const auto& intersection = *intersectionIt;
           if (intersection.boundary() && !intersection.neighbor()) {
             const auto& intersection_geometry = intersection.geometry();
-            for (int local_intersection_corner_id = 0; local_intersection_corner_id < intersection_geometry.corners();
+            for (size_t local_intersection_corner_id = 0;
+                 local_intersection_corner_id < intersection_geometry.corners();
                  ++local_intersection_corner_id) {
               const auto global_intersection_corner = intersection_geometry.corner(local_intersection_corner_id);
               // now, we need to find the entity's vertex this intersection's corner point equals to, so we
diff --git a/dune/gdt/operators/projections.hh b/dune/gdt/operators/projections.hh
index c1804b6e7..b0bff273a 100644
--- a/dune/gdt/operators/projections.hh
+++ b/dune/gdt/operators/projections.hh
@@ -100,10 +100,10 @@ template <class GridViewImp, class SourceImp, class RangeImp, class FieldImp>
 class DirichletProjectionLocalizableTraits
 {
   typedef typename RangeImp::SpaceType::Traits T;
-  static const unsigned int d = RangeImp::dimDomain;
+  static const size_t d = RangeImp::dimDomain;
   typedef typename RangeImp::RangeFieldType R;
-  static const unsigned int r  = RangeImp::dimRange;
-  static const unsigned int rC = RangeImp::dimRangeCols;
+  static const size_t r  = RangeImp::dimRange;
+  static const size_t rC = RangeImp::dimRangeCols;
   static_assert(is_cg_space<typename RangeImp::SpaceType>::value,
                 "The SpaceType of RangeImp has to be derived from Spaces::CGInterface!");
   static_assert(r == 1, "Not implemeneted for higher dimensions!");
@@ -146,7 +146,7 @@ public:
 private:
   typedef typename GridViewType::template Codim<0>::Entity EntityType;
   typedef typename GridViewType::ctype DomainFieldType;
-  static const unsigned int dimDomain = GridViewType::dimension;
+  static const size_t dimDomain = GridViewType::dimension;
   typedef FieldVector<DomainFieldType, dimDomain> DomainType;
 
 public:
@@ -155,14 +155,16 @@ public:
   {
   }
 
-  template <class E, class D, int d, class RS, int rS, int rCS, class GP, int p, class RR, int rR, int rCR, class V>
+  template <class E, class D, size_t d, class RS, size_t rS, size_t rCS, class GP, int p, class RR, size_t rR,
+            size_t rCR, class V>
   inline void apply(const Stuff::LocalizableFunctionInterface<E, D, d, RS, rS, rCS>& source,
                     DiscreteFunction<Spaces::CG::PdelabBased<GP, p, RR, rR, rCR>, V>& range) const
   {
     apply_p(source, range);
   }
 
-  template <class E, class D, int d, class RS, int rS, int rCS, class GP, int p, class RR, int rR, int rCR, class V>
+  template <class E, class D, size_t d, class RS, size_t rS, size_t rCS, class GP, int p, class RR, size_t rR,
+            size_t rCR, class V>
   inline void apply(const Stuff::LocalizableFunctionInterface<E, D, d, RS, rS, rCS>& source,
                     DiscreteFunction<Spaces::CG::FemBased<GP, p, RR, rR, rCR>, V>& range) const
   {
@@ -170,7 +172,7 @@ public:
   }
 
 private:
-  template <class R, int r, class V, class SpaceType>
+  template <class R, size_t r, class V, class SpaceType>
   void apply_p(const Stuff::LocalizableFunctionInterface<EntityType, DomainFieldType, dimDomain, R, r, 1>& source,
                DiscreteFunction<SpaceType, V>& range) const
   {
@@ -197,7 +199,7 @@ private:
   void apply_local(const LagrangePointsType& lagrange_points, const LocalSourceType& local_source,
                    LocalRangeVectorType& local_range_DoF_vector) const
   {
-    static const unsigned int dimRange = LocalSourceType::dimRange;
+    static const size_t dimRange = LocalSourceType::dimRange;
     assert(lagrange_points.size() == local_range_DoF_vector.size());
     size_t kk = 0;
     for (size_t ii = 0; ii < lagrange_points.size(); ++ii) {
@@ -232,7 +234,7 @@ public:
 private:
   typedef typename GridViewType::template Codim<0>::Entity EntityType;
   typedef typename GridViewType::ctype DomainFieldType;
-  static const unsigned int dimDomain = GridViewType::dimension;
+  static const size_t dimDomain = GridViewType::dimension;
 
 public:
   L2Projection(const GridViewType& grid_view, const size_t over_integrate = 0)
@@ -241,7 +243,7 @@ public:
   {
   }
 
-  template <class GP, int p, class R, int r, class V>
+  template <class GP, int p, class R, size_t r, class V>
   void apply(const Stuff::LocalizableFunctionInterface<EntityType, DomainFieldType, dimDomain, R, r, 1>& source,
              DiscreteFunction<Spaces::DG::FemBased<GP, p, R, r, 1>, V>& range) const
   {
@@ -253,7 +255,7 @@ public:
 
 #if HAVE_DUNE_GRID_MULTISCALE
 
-  template <class GP, int p, class R, int r, class V>
+  template <class GP, int p, class R, size_t r, class V>
   void apply(const Stuff::LocalizableFunctionInterface<EntityType, DomainFieldType, dimDomain, R, r, 1>& source,
              DiscreteFunction<Spaces::Block<Spaces::DG::FemBased<GP, p, R, r, 1>>, V>& range) const
   {
@@ -265,7 +267,7 @@ public:
 
 #endif // HAVE_DUNE_GRID_MULTISCALE
 
-  template <class GP, int p, class R, int r, class V>
+  template <class GP, int p, class R, size_t r, class V>
   void apply(const Stuff::LocalizableFunctionInterface<EntityType, DomainFieldType, dimDomain, R, r, 1>& source,
              DiscreteFunction<Spaces::DG::PdelabBased<GP, p, R, r, 1>, V>& range) const
   {
@@ -275,7 +277,7 @@ public:
     apply_local_l2_projection_(source, range);
   }
 
-  template <class E, class D, int d, class R, int r, class GV, class V>
+  template <class E, class D, size_t d, class R, size_t r, class GV, class V>
   void apply(const Stuff::LocalizableFunctionInterface<E, D, d, R, r, 1>& source,
              DiscreteFunction<Spaces::FV::Default<GV, R, r, 1>, V>& range) const
   {
@@ -430,7 +432,7 @@ public:
 private:
   typedef typename GridViewType::template Codim<0>::Entity EntityType;
   typedef typename GridViewType::ctype DomainFieldType;
-  static const unsigned int dimDomain = GridViewType::dimension;
+  static const size_t dimDomain = GridViewType::dimension;
 
 public:
   Projection(const GridViewType& grid_view, const size_t over_integrate = 0)
@@ -446,7 +448,7 @@ public:
   }
 
 private:
-  template <class E, class D, int d, class R, int r, int rC, class T, class V>
+  template <class E, class D, size_t d, class R, size_t r, size_t rC, class T, class V>
   void redirect_to_appropriate_operator(const Stuff::LocalizableFunctionInterface<E, D, d, R, r, rC>& /*source*/,
                                         DiscreteFunction<SpaceInterface<T, d, r, rC>, V>& /*range*/) const
   {
@@ -454,7 +456,8 @@ private:
                   "Could not find an appropriate operator for this combination of source and range!");
   }
 
-  template <class E, class D, int d, class RS, int rS, int rCS, class GP, int p, class RR, int rR, int rCR, class V>
+  template <class E, class D, size_t d, class RS, size_t rS, size_t rCS, class GP, int p, class RR, size_t rR,
+            size_t rCR, class V>
   inline void
   redirect_to_appropriate_operator(const Stuff::LocalizableFunctionInterface<E, D, d, RS, rS, rCS>& source,
                                    DiscreteFunction<Spaces::CG::FemBased<GP, p, RR, rR, rCR>, V>& range) const
@@ -462,7 +465,8 @@ private:
     lagrange_operator_.apply(source, range);
   }
 
-  template <class E, class D, int d, class RS, int rS, int rCS, class GP, int p, class RR, int rR, int rCR, class V>
+  template <class E, class D, size_t d, class RS, size_t rS, size_t rCS, class GP, int p, class RR, size_t rR,
+            size_t rCR, class V>
   inline void
   redirect_to_appropriate_operator(const Stuff::LocalizableFunctionInterface<E, D, d, RS, rS, rCS>& source,
                                    DiscreteFunction<Spaces::CG::PdelabBased<GP, p, RR, rR, rCR>, V>& range) const
@@ -470,7 +474,8 @@ private:
     lagrange_operator_.apply(source, range);
   }
 
-  template <class E, class D, int d, class RS, int rS, int rCS, class GP, int p, class RR, int rR, int rCR, class V>
+  template <class E, class D, size_t d, class RS, size_t rS, size_t rCS, class GP, int p, class RR, size_t rR,
+            size_t rCR, class V>
   inline void
   redirect_to_appropriate_operator(const Stuff::LocalizableFunctionInterface<E, D, d, RS, rS, rCS>& source,
                                    DiscreteFunction<Spaces::DG::FemBased<GP, p, RR, rR, rCR>, V>& range) const
@@ -480,7 +485,8 @@ private:
 
 #if HAVE_DUNE_GRID_MULTISCALE
 
-  template <class E, class D, int d, class RS, int rS, int rCS, class GP, int p, class RR, int rR, int rCR, class V>
+  template <class E, class D, size_t d, class RS, size_t rS, size_t rCS, class GP, int p, class RR, size_t rR,
+            size_t rCR, class V>
   inline void redirect_to_appropriate_operator(
       const Stuff::LocalizableFunctionInterface<E, D, d, RS, rS, rCS>& source,
       DiscreteFunction<Spaces::Block<Spaces::DG::FemBased<GP, p, RR, rR, rCR>>, V>& range) const
@@ -490,7 +496,8 @@ private:
 
 #endif // HAVE_DUNE_GRID_MULTISCALE
 
-  template <class E, class D, int d, class RS, int rS, int rCS, class GP, int p, class RR, int rR, int rCR, class V>
+  template <class E, class D, size_t d, class RS, size_t rS, size_t rCS, class GP, int p, class RR, size_t rR,
+            size_t rCR, class V>
   inline void
   redirect_to_appropriate_operator(const Stuff::LocalizableFunctionInterface<E, D, d, RS, rS, rCS>& source,
                                    DiscreteFunction<Spaces::DG::PdelabBased<GP, p, RR, rR, rCR>, V>& range) const
@@ -498,7 +505,8 @@ private:
     l2_operator_.apply(source, range);
   }
 
-  template <class E, class D, int d, class RS, int rS, int rCS, class GV, class RR, int rR, int rCR, class V>
+  template <class E, class D, size_t d, class RS, size_t rS, size_t rCS, class GV, class RR, size_t rR, size_t rCR,
+            class V>
   inline void redirect_to_appropriate_operator(const Stuff::LocalizableFunctionInterface<E, D, d, RS, rS, rCS>& source,
                                                DiscreteFunction<Spaces::FV::Default<GV, RR, rR, rCR>, V>& range) const
   {
@@ -603,7 +611,7 @@ public:
   typedef typename Traits::GridViewType GridViewType;
   typedef typename GridViewType::template Codim<0>::Entity EntityType;
   typedef typename GridViewType::ctype DomainFieldType;
-  static const unsigned int dimDomain = GridViewType::dimension;
+  static const size_t dimDomain = GridViewType::dimension;
   typedef Stuff::Grid::BoundaryInfoInterface<typename GridViewType::Intersection> BoundaryInfoType;
 
 public:
@@ -613,7 +621,7 @@ public:
   {
   }
 
-  template <class R, int r, int rC, class GV, int p, class V>
+  template <class R, size_t r, size_t rC, class GV, int p, class V>
   void apply(const Stuff::LocalizableFunctionInterface<EntityType, DomainFieldType, dimDomain, R, r, rC>& source,
              DiscreteFunction<Spaces::CG::FemBased<GV, p, R, r, rC>, V>& range) const
   {
@@ -624,7 +632,7 @@ public:
     localizable_operator.apply();
   } // ... apply(...)
 
-  template <class R, int r, int rC, class GV, int p, class V>
+  template <class R, size_t r, size_t rC, class GV, int p, class V>
   void apply(const Stuff::LocalizableFunctionInterface<EntityType, DomainFieldType, dimDomain, R, r, rC>& source,
              DiscreteFunction<Spaces::CG::PdelabBased<GV, p, R, r, rC>, V>& range) const
   {
diff --git a/dune/gdt/operators/prolongations.hh b/dune/gdt/operators/prolongations.hh
index 219508a1e..d42d6c2fe 100644
--- a/dune/gdt/operators/prolongations.hh
+++ b/dune/gdt/operators/prolongations.hh
@@ -36,7 +36,7 @@ namespace GDT {
 
 namespace Spaces {
 namespace DG {
-template <class GridPartImp, int polynomialOrder, class RangeFieldImp, int rangeDim, int rangeDimCols>
+template <class GridPartImp, int polynomialOrder, class RangeFieldImp, size_t rangeDim, size_t rangeDimCols>
 class FemBased;
 }
 template <class SpaceImp>
@@ -52,7 +52,7 @@ namespace Operators {
  *        local polynomial degree.
  *
  *  \note We would have liked to do something like this and match on implementations of SpaceInterface:\code
-template< class T, class VS, class GPR, int pR, class RR, int rR, int rCR, class VR >
+template< class T, class VS, class GPR, int pR, class RR, size_t rR, size_t rCR, class VR >
 void apply(const ConstDiscreteFunction< SpaceInterface< T >, VS >& source,
            DiscreteFunction< Spaces::DG::FemBased< GPR, pR, RR, rR, rCR >, VR >& range) const
 {
@@ -69,7 +69,7 @@ class L2Prolongation
 {
   typedef typename GridViewType::template Codim<0>::Entity EntityType;
   typedef typename GridViewType::ctype DomainFieldType;
-  static const unsigned int dimDomain = GridViewType::dimension;
+  static const size_t dimDomain = GridViewType::dimension;
 
 public:
   L2Prolongation(const GridViewType& grid_view)
@@ -80,15 +80,15 @@ public:
   // Source: Spaces::CG::FemBased
   // Range:  Spaces::DG::FemBased
 
-  template <class GPS, int pS, class RS, int rS, int rCS, class VS, class GPR, int pR, class RR, int rR, int rCR,
-            class VR>
+  template <class GPS, int pS, class RS, size_t rS, size_t rCS, class VS, class GPR, int pR, class RR, size_t rR,
+            size_t rCR, class VR>
   void apply(const ConstDiscreteFunction<Spaces::CG::FemBased<GPS, pS, RS, rS, rCS>, VS>& /*source*/,
              DiscreteFunction<Spaces::DG::FemBased<GPR, pR, RR, rR, rCR>, VR>& /*range*/) const
   {
     static_assert(Dune::AlwaysFalse<GPS>::value, "Not implemented for this combination of source and range!");
   }
 
-  template <class GPS, int pS, class R, int r, int rC, class VS, class GPR, int pR, class VR>
+  template <class GPS, int pS, class R, size_t r, size_t rC, class VS, class GPR, int pR, class VR>
   inline void apply(const ConstDiscreteFunction<Spaces::CG::FemBased<GPS, pS, R, r, rC>, VS>& source,
                     DiscreteFunction<Spaces::DG::FemBased<GPR, pR, R, r, rC>, VR>& range) const
   {
@@ -98,29 +98,29 @@ public:
   // Source: Spaces::DG::FemBased
   // Range:  Spaces::DG::FemBased
 
-  template <class GPS, int pS, class RS, int rS, int rCS, class VS, class GPR, int pR, class RR, int rR, int rCR,
-            class VR>
+  template <class GPS, int pS, class RS, size_t rS, size_t rCS, class VS, class GPR, int pR, class RR, size_t rR,
+            size_t rCR, class VR>
   void apply(const ConstDiscreteFunction<Spaces::DG::FemBased<GPS, pS, RS, rS, rCS>, VS>& /*source*/,
              DiscreteFunction<Spaces::DG::FemBased<GPR, pR, RR, rR, rCR>, VR>& /*range*/) const
   {
     static_assert(Dune::AlwaysFalse<GPS>::value, "Not implemented for this combination of source and range!");
   }
 
-  template <class GPS, int pS, class R, int r, int rC, class VS, class GPR, int pR, class VR>
+  template <class GPS, int pS, class R, size_t r, size_t rC, class VS, class GPR, int pR, class VR>
   inline void apply(const ConstDiscreteFunction<Spaces::DG::FemBased<GPS, pS, R, r, rC>, VS>& source,
                     DiscreteFunction<Spaces::DG::FemBased<GPR, pR, R, r, rC>, VR>& range) const
   {
     prolong_onto_dg_fem_localfunctions_wrapper(source, range);
   }
 
-  template <class GPS, int pS, class R, int r, int rC, class VS, class GPR, int pR, class VR>
+  template <class GPS, int pS, class R, size_t r, size_t rC, class VS, class GPR, int pR, class VR>
   inline void apply(const ConstDiscreteFunction<Spaces::Block<Spaces::DG::FemBased<GPS, pS, R, r, rC>>, VS>& source,
                     DiscreteFunction<Spaces::Block<Spaces::DG::FemBased<GPR, pR, R, r, rC>>, VR>& range) const
   {
     prolong_onto_dg_fem_localfunctions_wrapper(source, range);
   }
 
-  template <class GPS, int pS, class R, int r, int rC, class VS, class GPR, int pR, class VR>
+  template <class GPS, int pS, class R, size_t r, size_t rC, class VS, class GPR, int pR, class VR>
   inline void apply(const ConstDiscreteFunction<Spaces::Block<Spaces::DG::FemBased<GPS, pS, R, r, rC>>, VS>& source,
                     DiscreteFunction<Spaces::DG::FemBased<GPR, pR, R, r, rC>, VR>& range) const
   {
@@ -217,7 +217,7 @@ private:
 
 /**
  *  \note We would have liked to do something like this and match on implementations of SpaceInterface:\code
-template< class T, class VS, class GPR, int pR, class RR, int rR, int rCR, class VR >
+template< class T, class VS, class GPR, int pR, class RR, size_t rR, size_t rCR, class VR >
 void apply(const ConstDiscreteFunction< SpaceInterface< T >, VS >& source,
            DiscreteFunction< Spaces::CG::FemBased< GPR, pR, RR, rR, rCR >, VR >& range) const
 {
@@ -231,7 +231,7 @@ class LagrangeProlongation
 {
 public:
   typedef typename GridViewType::ctype DomainFieldType;
-  static const unsigned int dimDomain = GridViewType::dimension;
+  static const size_t dimDomain = GridViewType::dimension;
 
   LagrangeProlongation(const GridViewType& grid_view)
     : grid_view_(grid_view)
@@ -241,15 +241,15 @@ public:
   // Source: Spaces::CG::FemBased
   // Range:  Spaces::CG::FemBased
 
-  template <class GPS, int pS, class RS, int rS, int rCS, class VS, class GPR, int pR, class RR, int rR, int rCR,
-            class VR>
+  template <class GPS, int pS, class RS, size_t rS, size_t rCS, class VS, class GPR, int pR, class RR, size_t rR,
+            size_t rCR, class VR>
   void apply(const ConstDiscreteFunction<Spaces::CG::FemBased<GPS, pS, RS, rS, rCS>, VS>& /*source*/,
              DiscreteFunction<Spaces::CG::FemBased<GPR, pR, RR, rR, rCR>, VR>& /*range*/) const
   {
     static_assert(Dune::AlwaysFalse<GPS>::value, "Not implemented for this combination of source and range!");
   }
 
-  template <class GPS, int pS, class R, int r, class VS, class GPR, int pR, class VR>
+  template <class GPS, int pS, class R, size_t r, class VS, class GPR, int pR, class VR>
   inline void apply(const ConstDiscreteFunction<Spaces::CG::FemBased<GPS, pS, R, r, 1>, VS>& source,
                     DiscreteFunction<Spaces::CG::FemBased<GPR, pR, R, r, 1>, VR>& range) const
   {
@@ -259,15 +259,15 @@ public:
   // Source: Spaces::DG::FemBased
   // Range:  Spaces::CG::FemBased
 
-  template <class GPS, int pS, class RS, int rS, int rCS, class VS, class GPR, int pR, class RR, int rR, int rCR,
-            class VR>
+  template <class GPS, int pS, class RS, size_t rS, size_t rCS, class VS, class GPR, int pR, class RR, size_t rR,
+            size_t rCR, class VR>
   void apply(const ConstDiscreteFunction<Spaces::DG::FemBased<GPS, pS, RS, rS, rCS>, VS>& /*source*/,
              DiscreteFunction<Spaces::CG::FemBased<GPR, pR, RR, rR, rCR>, VR>& /*range*/) const
   {
     static_assert(Dune::AlwaysFalse<GPS>::value, "Not implemented for this combination of source and range!");
   }
 
-  template <class GPS, int pS, class R, int r, class VS, class GPR, int pR, class VR>
+  template <class GPS, int pS, class R, size_t r, class VS, class GPR, int pR, class VR>
   inline void apply(const ConstDiscreteFunction<Spaces::DG::FemBased<GPS, pS, R, r, 1>, VS>& source,
                     DiscreteFunction<Spaces::CG::FemBased<GPR, pR, R, r, 1>, VR>& range) const
   {
@@ -277,15 +277,15 @@ public:
   // Source: Spaces::CG::PdelabBased
   // Range:  Spaces::CG::PdelabBased
 
-  template <class GPS, int pS, class RS, int rS, int rCS, class VS, class GPR, int pR, class RR, int rR, int rCR,
-            class VR>
+  template <class GPS, int pS, class RS, size_t rS, size_t rCS, class VS, class GPR, int pR, class RR, size_t rR,
+            size_t rCR, class VR>
   void apply(const ConstDiscreteFunction<Spaces::CG::PdelabBased<GPS, pS, RS, rS, rCS>, VS>& /*source*/,
              DiscreteFunction<Spaces::CG::PdelabBased<GPR, pR, RR, rR, rCR>, VR>& /*range*/) const
   {
     static_assert(Dune::AlwaysFalse<GPS>::value, "Not implemented for this combination of source and range!");
   }
 
-  template <class GPS, int pS, class R, int r, int rC, class VS, class GPR, class VR>
+  template <class GPS, int pS, class R, size_t r, size_t rC, class VS, class GPR, class VR>
   inline void apply(const ConstDiscreteFunction<Spaces::CG::PdelabBased<GPS, pS, R, r, rC>, VS>& source,
                     DiscreteFunction<Spaces::CG::PdelabBased<GPR, 1, R, r, rC>, VR>& range) const
   {
@@ -329,7 +329,7 @@ private:
   void apply_local(const SourceType& source, const LagrangePointsType& lagrange_points,
                    const EntityPointers& source_entity_ptr_unique_ptrs, LocalDoFVectorType& range_DoF_vector) const
   {
-    static const unsigned int dimRange = SourceType::dimRange;
+    static const size_t dimRange = SourceType::dimRange;
     size_t kk = 0;
     assert(source_entity_ptr_unique_ptrs.size() >= lagrange_points.size());
     for (size_t ii = 0; ii < lagrange_points.size(); ++ii) {
@@ -362,7 +362,7 @@ class Prolongation
 {
 public:
   typedef typename GridViewType::ctype DomainFieldType;
-  static const unsigned int dimDomain = GridViewType::dimension;
+  static const size_t dimDomain = GridViewType::dimension;
 
   Prolongation(const GridViewType& grid_view)
     : l2_prolongation_operator_(grid_view)
@@ -377,8 +377,8 @@ public:
   }
 
 private:
-  template <class GPS, int pS, class RS, int rS, int rCS, class VS, class GPR, int pR, class RR, int rR, int rCR,
-            class VR>
+  template <class GPS, int pS, class RS, size_t rS, size_t rCS, class VS, class GPR, int pR, class RR, size_t rR,
+            size_t rCR, class VR>
   inline void
   redirect_to_appropriate_operator(const ConstDiscreteFunction<Spaces::CG::FemBased<GPS, pS, RS, rS, rCS>, VS>& source,
                                    DiscreteFunction<Spaces::DG::FemBased<GPR, pR, RR, rR, rCR>, VR>& range) const
@@ -386,8 +386,8 @@ private:
     l2_prolongation_operator_.apply(source, range);
   }
 
-  template <class GPS, int pS, class RS, int rS, int rCS, class VS, class GPR, int pR, class RR, int rR, int rCR,
-            class VR>
+  template <class GPS, int pS, class RS, size_t rS, size_t rCS, class VS, class GPR, int pR, class RR, size_t rR,
+            size_t rCR, class VR>
   inline void
   redirect_to_appropriate_operator(const ConstDiscreteFunction<Spaces::DG::FemBased<GPS, pS, RS, rS, rCS>, VS>& source,
                                    DiscreteFunction<Spaces::DG::FemBased<GPR, pR, RR, rR, rCR>, VR>& range) const
@@ -395,8 +395,8 @@ private:
     l2_prolongation_operator_.apply(source, range);
   }
 
-  template <class GPS, int pS, class RS, int rS, int rCS, class VS, class GPR, int pR, class RR, int rR, int rCR,
-            class VR>
+  template <class GPS, int pS, class RS, size_t rS, size_t rCS, class VS, class GPR, int pR, class RR, size_t rR,
+            size_t rCR, class VR>
   inline void redirect_to_appropriate_operator(
       const ConstDiscreteFunction<Spaces::Block<Spaces::DG::FemBased<GPS, pS, RS, rS, rCS>>, VS>& source,
       DiscreteFunction<Spaces::Block<Spaces::DG::FemBased<GPR, pR, RR, rR, rCR>>, VR>& range) const
@@ -404,8 +404,8 @@ private:
     l2_prolongation_operator_.apply(source, range);
   }
 
-  template <class GPS, int pS, class RS, int rS, int rCS, class VS, class GPR, int pR, class RR, int rR, int rCR,
-            class VR>
+  template <class GPS, int pS, class RS, size_t rS, size_t rCS, class VS, class GPR, int pR, class RR, size_t rR,
+            size_t rCR, class VR>
   inline void redirect_to_appropriate_operator(
       const ConstDiscreteFunction<Spaces::Block<Spaces::DG::FemBased<GPS, pS, RS, rS, rCS>>, VS>& source,
       DiscreteFunction<Spaces::DG::FemBased<GPR, pR, RR, rR, rCR>, VR>& range) const
@@ -413,8 +413,8 @@ private:
     l2_prolongation_operator_.apply(source, range);
   }
 
-  template <class GPS, int pS, class RS, int rS, int rCS, class VS, class GPR, int pR, class RR, int rR, int rCR,
-            class VR>
+  template <class GPS, int pS, class RS, size_t rS, size_t rCS, class VS, class GPR, int pR, class RR, size_t rR,
+            size_t rCR, class VR>
   inline void
   redirect_to_appropriate_operator(const ConstDiscreteFunction<Spaces::CG::FemBased<GPS, pS, RS, rS, rCS>, VS>& source,
                                    DiscreteFunction<Spaces::CG::FemBased<GPR, pR, RR, rR, rCR>, VR>& range) const
@@ -422,8 +422,8 @@ private:
     lagrange_prolongation_operator_.apply(source, range);
   }
 
-  template <class GPS, int pS, class RS, int rS, int rCS, class VS, class GPR, int pR, class RR, int rR, int rCR,
-            class VR>
+  template <class GPS, int pS, class RS, size_t rS, size_t rCS, class VS, class GPR, int pR, class RR, size_t rR,
+            size_t rCR, class VR>
   inline void
   redirect_to_appropriate_operator(const ConstDiscreteFunction<Spaces::DG::FemBased<GPS, pS, RS, rS, rCS>, VS>& source,
                                    DiscreteFunction<Spaces::CG::FemBased<GPR, pR, RR, rR, rCR>, VR>& range) const
@@ -431,8 +431,8 @@ private:
     lagrange_prolongation_operator_.apply(source, range);
   }
 
-  template <class GPS, int pS, class RS, int rS, int rCS, class VS, class GPR, int pR, class RR, int rR, int rCR,
-            class VR>
+  template <class GPS, int pS, class RS, size_t rS, size_t rCS, class VS, class GPR, int pR, class RR, size_t rR,
+            size_t rCR, class VR>
   inline void redirect_to_appropriate_operator(
       const ConstDiscreteFunction<Spaces::CG::PdelabBased<GPS, pS, RS, rS, rCS>, VS>& source,
       DiscreteFunction<Spaces::CG::PdelabBased<GPR, pR, RR, rR, rCR>, VR>& range) const
diff --git a/dune/gdt/playground/localevaluation/ESV2007.hh b/dune/gdt/playground/localevaluation/ESV2007.hh
index 6c4e7f417..b95755930 100644
--- a/dune/gdt/playground/localevaluation/ESV2007.hh
+++ b/dune/gdt/playground/localevaluation/ESV2007.hh
@@ -67,7 +67,7 @@ public:
                      std::shared_ptr<LocalDiffusiveFluxType>> LocalfunctionTupleType;
   typedef typename LocalizableDiffusionFactorType::EntityType EntityType;
   typedef typename LocalizableDiffusionFactorType::DomainFieldType DomainFieldType;
-  static const unsigned int dimDomain = LocalizableDiffusionFactorType::dimDomain;
+  static const size_t dimDomain = LocalizableDiffusionFactorType::dimDomain;
 }; // class DiffusiveFluxEstimateTraits
 
 
@@ -94,7 +94,7 @@ public:
       LocalfunctionTupleType;
   typedef typename LocalizableDiffusionType::EntityType EntityType;
   typedef typename LocalizableDiffusionType::DomainFieldType DomainFieldType;
-  static const unsigned int dimDomain = LocalizableDiffusionType::dimDomain;
+  static const size_t dimDomain = LocalizableDiffusionType::dimDomain;
 }; // class DiffusiveFluxEstimateTraits
 
 
@@ -112,7 +112,7 @@ public:
   typedef typename Traits::LocalfunctionTupleType LocalfunctionTupleType;
   typedef typename Traits::EntityType EntityType;
   typedef typename Traits::DomainFieldType DomainFieldType;
-  static const unsigned int dimDomain = Traits::dimDomain;
+  static const size_t dimDomain = Traits::dimDomain;
 
   DiffusiveFluxEstimate(const LocalizableDiffusionType& diffusion, const LocalizableDiffusiveFluxType& diffusive_flux)
     : diffusion_(diffusion)
@@ -125,7 +125,7 @@ public:
     return std::make_tuple(diffusion_.local_function(entity), diffusive_flux_.local_function(entity));
   }
 
-  template <class R, int rT, int rCT, int rA, int rCA>
+  template <class R, size_t rT, size_t rCT, size_t rA, size_t rCA>
   size_t
   order(const LocalfunctionTupleType localFuncs,
         const Stuff::LocalfunctionSetInterface<EntityType, DomainFieldType, dimDomain, R, rT, rCT>& testBase,
@@ -136,7 +136,7 @@ public:
     return redirect_order(*local_diffusion, *local_diffusive_flux, testBase, ansatzBase);
   } // ... order(...)
 
-  template <class R, int rT, int rCT, int rA, int rCA>
+  template <class R, size_t rT, size_t rCT, size_t rA, size_t rCA>
   void evaluate(const LocalfunctionTupleType localFuncs,
                 const Stuff::LocalfunctionSetInterface<EntityType, DomainFieldType, dimDomain, R, rT, rCT>& test_base,
                 const Stuff::LocalfunctionSetInterface<EntityType, DomainFieldType, dimDomain, R, rA, rCA>& ansatz_base,
@@ -148,7 +148,7 @@ public:
   } // ... evaluate(...)
 
 private:
-  template <class R, int rLD, int rCLD, int rLDF, int rCLDF, int rT, int rCT, int rA, int rCA>
+  template <class R, size_t rLD, size_t rCLD, size_t rLDF, size_t rCLDF, size_t rT, size_t rCT, size_t rA, size_t rCA>
   size_t redirect_order(
       const Stuff::LocalfunctionInterface<EntityType, DomainFieldType, dimDomain, R, rLD, rCLD>& local_diffusion,
       const Stuff::LocalfunctionInterface<EntityType, DomainFieldType, dimDomain, R, rLDF, rCLDF>& local_diffusive_flux,
@@ -163,7 +163,7 @@ private:
                        local_diffusive_flux.order()));
   } // ... redirect_order(...)
 
-  template <class R, int rLD, int rCLD, int rLDF, int rCLDF, int rT, int rCT, int rA, int rCA>
+  template <class R, size_t rLD, size_t rCLD, size_t rLDF, size_t rCLDF, size_t rT, size_t rCT, size_t rA, size_t rCA>
   void redirect_evaluate(
       const Stuff::LocalfunctionInterface<EntityType, DomainFieldType, dimDomain, R, rLD, rCLD>& /*local_diffusion*/,
       const Stuff::LocalfunctionInterface<EntityType, DomainFieldType, dimDomain, R, rLDF,
@@ -236,7 +236,7 @@ public:
   typedef typename Traits::LocalfunctionTupleType LocalfunctionTupleType;
   typedef typename Traits::EntityType EntityType;
   typedef typename Traits::DomainFieldType DomainFieldType;
-  static const unsigned int dimDomain = Traits::dimDomain;
+  static const size_t dimDomain = Traits::dimDomain;
 
   DiffusiveFluxEstimate(const LocalizableDiffusionFactorType& diffusion_factor,
                         const LocalizableDiffusionTensorType& diffusion_tensor,
@@ -254,7 +254,7 @@ public:
                            diffusive_flux_.local_function(entity));
   }
 
-  template <class R, int rT, int rCT, int rA, int rCA>
+  template <class R, size_t rT, size_t rCT, size_t rA, size_t rCA>
   size_t
   order(const LocalfunctionTupleType localFuncs,
         const Stuff::LocalfunctionSetInterface<EntityType, DomainFieldType, dimDomain, R, rT, rCT>& testBase,
@@ -267,7 +267,7 @@ public:
         *local_diffusion_factor, *local_diffusion_tensor, *local_diffusive_flux, testBase, ansatzBase);
   } // ... order(...)
 
-  template <class R, int rT, int rCT, int rA, int rCA>
+  template <class R, size_t rT, size_t rCT, size_t rA, size_t rCA>
   void evaluate(const LocalfunctionTupleType localFuncs,
                 const Stuff::LocalfunctionSetInterface<EntityType, DomainFieldType, dimDomain, R, rT, rCT>& test_base,
                 const Stuff::LocalfunctionSetInterface<EntityType, DomainFieldType, dimDomain, R, rA, rCA>& ansatz_base,
@@ -286,7 +286,8 @@ public:
   } // ... evaluate(...)
 
 private:
-  template <class R, int rLD, int rCLD, int rLDT, int rCLDT, int rLDF, int rCLDF, int rT, int rCT, int rA, int rCA>
+  template <class R, size_t rLD, size_t rCLD, size_t rLDT, size_t rCLDT, size_t rLDF, size_t rCLDF, size_t rT,
+            size_t rCT, size_t rA, size_t rCA>
   size_t redirect_order(
       const Stuff::LocalfunctionInterface<EntityType, DomainFieldType, dimDomain, R, rLD, rCLD>& local_diffusion_factor,
       const Stuff::LocalfunctionInterface<EntityType, DomainFieldType, dimDomain, R, rLDT, rCLDT>&
@@ -305,7 +306,8 @@ private:
                        local_diffusive_flux.order()));
   } // ... redirect_order(...)
 
-  template <class R, int rLD, int rCLD, int rLDT, int rCLDT, int rLDF, int rCLDF, int rT, int rCT, int rA, int rCA>
+  template <class R, size_t rLD, size_t rCLD, size_t rLDT, size_t rCLDT, size_t rLDF, size_t rCLDF, size_t rT,
+            size_t rCT, size_t rA, size_t rCA>
   void redirect_evaluate(
       const Stuff::LocalfunctionInterface<EntityType, DomainFieldType, dimDomain, R, rLD,
                                           rCLD>& /*local_diffusion_factor*/,
diff --git a/dune/gdt/playground/localevaluation/OS2014.hh b/dune/gdt/playground/localevaluation/OS2014.hh
index 94c407c89..ab0154d9d 100644
--- a/dune/gdt/playground/localevaluation/OS2014.hh
+++ b/dune/gdt/playground/localevaluation/OS2014.hh
@@ -78,7 +78,7 @@ public:
                      std::shared_ptr<LocalDiffusiveFluxFunctionType>> LocalfunctionTupleType;
   typedef typename LocalizableDiffusionFactorFunctionType::EntityType EntityType;
   typedef typename LocalizableDiffusionFactorFunctionType::DomainFieldType DomainFieldType;
-  static const unsigned int dimDomain = LocalizableDiffusionFactorFunctionType::dimDomain;
+  static const size_t dimDomain = LocalizableDiffusionFactorFunctionType::dimDomain;
 }; // class DiffusiveFluxEstimateTraits
 
 
@@ -102,7 +102,7 @@ public:
   typedef typename Traits::LocalfunctionTupleType LocalfunctionTupleType;
   typedef typename Traits::EntityType EntityType;
   typedef typename Traits::DomainFieldType DomainFieldType;
-  static const unsigned int dimDomain = Traits::dimDomain;
+  static const size_t dimDomain = Traits::dimDomain;
 
   DiffusiveFluxEstimateStar(const LocalizableDiffusionFactorFunctionType& diffusion_factor,
                             const LocalizableDiffusionFactorHatFunctionType& diffusion_factor_hat,
@@ -123,7 +123,7 @@ public:
                            diffusive_flux_.local_function(entity));
   }
 
-  template <class R, int rT, int rCT, int rA, int rCA>
+  template <class R, size_t rT, size_t rCT, size_t rA, size_t rCA>
   size_t
   order(const LocalfunctionTupleType& localFuncs,
         const Stuff::LocalfunctionSetInterface<EntityType, DomainFieldType, dimDomain, R, rT, rCT>& testBase,
@@ -142,7 +142,8 @@ public:
   } // ... order(...)
 
 private:
-  template <class R, int rLD, int rCLD, int rLDT, int rCLDT, int rLDF, int rCLDF, int rT, int rCT, int rA, int rCA>
+  template <class R, size_t rLD, size_t rCLD, size_t rLDT, size_t rCLDT, size_t rLDF, size_t rCLDF, size_t rT,
+            size_t rCT, size_t rA, size_t rCA>
   size_t redirect_order(
       const Stuff::LocalfunctionInterface<EntityType, DomainFieldType, dimDomain, R, rLD, rCLD>& local_diffusion_factor,
       const Stuff::LocalfunctionInterface<EntityType, DomainFieldType, dimDomain, R, rLD, rCLD>&
@@ -165,7 +166,7 @@ private:
   } // ... redirect_order(...)
 
 public:
-  template <class R, int rT, int rCT, int rA, int rCA>
+  template <class R, size_t rT, size_t rCT, size_t rA, size_t rCA>
   void evaluate(const LocalfunctionTupleType& localFuncs,
                 const Stuff::LocalfunctionSetInterface<EntityType, DomainFieldType, dimDomain, R, rT, rCT>& test_base,
                 const Stuff::LocalfunctionSetInterface<EntityType, DomainFieldType, dimDomain, R, rA, rCA>& ansatz_base,
@@ -186,8 +187,8 @@ public:
   } // ... evaluate(...)
 
 private:
-  template <class R, int rLD, int rCLD, int rLDh, int rCLDh, int rLDT, int rCLDT, int rLDF, int rCLDF, int rT, int rCT,
-            int rA, int rCA>
+  template <class R, size_t rLD, size_t rCLD, size_t rLDh, size_t rCLDh, size_t rLDT, size_t rCLDT, size_t rLDF,
+            size_t rCLDF, size_t rT, size_t rCT, size_t rA, size_t rCA>
   void redirect_evaluate(
       const Stuff::LocalfunctionInterface<EntityType, DomainFieldType, dimDomain, R, rLD,
                                           rCLD>& /*local_diffusion_factor*/,
diff --git a/dune/gdt/playground/localevaluation/swipdg.hh b/dune/gdt/playground/localevaluation/swipdg.hh
index 1d518fe76..8a0b0cea7 100644
--- a/dune/gdt/playground/localevaluation/swipdg.hh
+++ b/dune/gdt/playground/localevaluation/swipdg.hh
@@ -29,7 +29,7 @@ public:
   typedef typename Traits::LocalfunctionTupleType LocalfunctionTupleType;
   typedef typename Traits::EntityType EntityType;
   typedef typename Traits::DomainFieldType DomainFieldType;
-  static const unsigned int dimDomain = Traits::dimDomain;
+  static const size_t dimDomain = Traits::dimDomain;
 
   Inner(const LocalizableDiffusionFactorFunctionType& diffusion_factor,
         const LocalizableDiffusionTensorFunctionType& inducingFunction,
@@ -48,7 +48,7 @@ public:
   /**
    * \brief extracts the local functions and calls the correct order() method
    */
-  template <class R, int rT, int rCT, int rA, int rCA>
+  template <class R, size_t rT, size_t rCT, size_t rA, size_t rCA>
   size_t
   order(const LocalfunctionTupleType& localFunctionsEntity, const LocalfunctionTupleType& localFunctionsNeighbor,
         const Stuff::LocalfunctionSetInterface<EntityType, DomainFieldType, dimDomain, R, rT, rCT>& testBaseEntity,
@@ -74,7 +74,7 @@ public:
   /**
    * \brief extracts the local functions and calls the correct evaluate() method
    */
-  template <class IntersectionType, class R, int rT, int rCT, int rA, int rCA>
+  template <class IntersectionType, class R, size_t rT, size_t rCT, size_t rA, size_t rCA>
   void evaluate(
       const LocalfunctionTupleType& localFunctionsEntity, const LocalfunctionTupleType& localFunctionsNeighbor,
       const Stuff::LocalfunctionSetInterface<EntityType, DomainFieldType, dimDomain, R, rT, rCT>& testBaseEntity,
@@ -105,7 +105,7 @@ public:
              neighborEntityRet);
   }
 
-  template <class R, int rDF, int rCDF, int rDT, int rCDT, int rT, int rCT, int rA, int rCA>
+  template <class R, size_t rDF, size_t rCDF, size_t rDT, size_t rCDT, size_t rT, size_t rCT, size_t rA, size_t rCA>
   size_t
   order(const Stuff::LocalfunctionInterface<EntityType, DomainFieldType, dimDomain, R, rDF, rCDF>&
             localDiffusionFactorEntity,
@@ -289,7 +289,7 @@ public:
   typedef typename Traits::LocalfunctionTupleType LocalfunctionTupleType;
   typedef typename Traits::EntityType EntityType;
   typedef typename Traits::DomainFieldType DomainFieldType;
-  static const unsigned int dimDomain = Traits::dimDomain;
+  static const size_t dimDomain = Traits::dimDomain;
 
   InnerPenalty(const LocalizableDiffusionFactorFunctionType& diffusion_factor,
                const LocalizableDiffusionTensorFunctionType& inducingFunction,
@@ -308,7 +308,7 @@ public:
   /**
    * \brief extracts the local functions and calls the correct order() method
    */
-  template <class R, int rT, int rCT, int rA, int rCA>
+  template <class R, size_t rT, size_t rCT, size_t rA, size_t rCA>
   size_t
   order(const LocalfunctionTupleType& localFunctionsEntity, const LocalfunctionTupleType& localFunctionsNeighbor,
         const Stuff::LocalfunctionSetInterface<EntityType, DomainFieldType, dimDomain, R, rT, rCT>& testBaseEntity,
@@ -334,7 +334,7 @@ public:
   /**
    * \brief extracts the local functions and calls the correct evaluate() method
    */
-  template <class IntersectionType, class R, int rT, int rCT, int rA, int rCA>
+  template <class IntersectionType, class R, size_t rT, size_t rCT, size_t rA, size_t rCA>
   void evaluate(
       const LocalfunctionTupleType& localFunctionsEntity, const LocalfunctionTupleType& localFunctionsNeighbor,
       const Stuff::LocalfunctionSetInterface<EntityType, DomainFieldType, dimDomain, R, rT, rCT>& testBaseEntity,
@@ -365,7 +365,7 @@ public:
              neighborEntityRet);
   }
 
-  template <class R, int rDF, int rCDF, int rDT, int rCDT, int rT, int rCT, int rA, int rCA>
+  template <class R, size_t rDF, size_t rCDF, size_t rDT, size_t rCDT, size_t rT, size_t rCT, size_t rA, size_t rCA>
   size_t
   order(const Stuff::LocalfunctionInterface<EntityType, DomainFieldType, dimDomain, R, rDF, rCDF>&
             localDiffusionFactorEntity,
@@ -512,7 +512,7 @@ public:
   typedef typename Traits::LocalfunctionTupleType LocalfunctionTupleType;
   typedef typename Traits::EntityType EntityType;
   typedef typename Traits::DomainFieldType DomainFieldType;
-  static const unsigned int dimDomain = Traits::dimDomain;
+  static const size_t dimDomain = Traits::dimDomain;
 
   BoundaryLHS(const LocalizableDiffusionFactorFunctionType& diffusion_factor,
               const LocalizableDiffusionTensorFunctionType& diffusion_tensor,
@@ -531,7 +531,7 @@ public:
   /**
    * \brief extracts the local functions and calls the correct order() method
    */
-  template <class R, int rT, int rCT, int rA, int rCA>
+  template <class R, size_t rT, size_t rCT, size_t rA, size_t rCA>
   size_t
   order(const LocalfunctionTupleType& localFuncs,
         const Stuff::LocalfunctionSetInterface<EntityType, DomainFieldType, dimDomain, R, rT, rCT>& testBase,
@@ -545,7 +545,7 @@ public:
   /**
    * \brief extracts the local functions and calls the correct evaluate() method
    */
-  template <class IntersectionType, class R, int rT, int rCT, int rA, int rCA>
+  template <class IntersectionType, class R, size_t rT, size_t rCT, size_t rA, size_t rCA>
   void evaluate(const LocalfunctionTupleType& localFuncs,
                 const Stuff::LocalfunctionSetInterface<EntityType, DomainFieldType, dimDomain, R, rT, rCT>& testBase,
                 const Stuff::LocalfunctionSetInterface<EntityType, DomainFieldType, dimDomain, R, rA, rCA>& ansatzBase,
@@ -557,7 +557,7 @@ public:
     evaluate(*local_diffusion_factor, *local_diffusion_tensor, testBase, ansatzBase, intersection, localPoint, ret);
   }
 
-  template <class R, int rDF, int rCDF, int rDT, int rCDT, int rT, int rCT, int rA, int rCA>
+  template <class R, size_t rDF, size_t rCDF, size_t rDT, size_t rCDT, size_t rT, size_t rCT, size_t rA, size_t rCA>
   size_t
   order(const Stuff::LocalfunctionInterface<EntityType, DomainFieldType, dimDomain, R, rDF, rCDF>& localDiffusionFactor,
         const Stuff::LocalfunctionInterface<EntityType, DomainFieldType, dimDomain, R, rDT, rCDT>& localDiffusionTensor,
@@ -567,7 +567,8 @@ public:
     return localDiffusionFactor.order() + localDiffusionTensor.order() + testBase.order() + ansatzBase.order();
   } // size_t order< ... >(...)
 
-  template <class IntersectionType, class R, int rDF, int rCDF, int rDT, int rCDT, int rT, int rCT, int rA, int rCA>
+  template <class IntersectionType, class R, size_t rDF, size_t rCDF, size_t rDT, size_t rCDT, size_t rT, size_t rCT,
+            size_t rA, size_t rCA>
   void
   evaluate(const Stuff::LocalfunctionInterface<EntityType, DomainFieldType, dimDomain, R, rDF,
                                                rCDF>& /*localDiffusionFactor*/,
@@ -665,7 +666,7 @@ public:
   typedef typename Traits::LocalfunctionTupleType LocalfunctionTupleType;
   typedef typename Traits::EntityType EntityType;
   typedef typename Traits::DomainFieldType DomainFieldType;
-  static const unsigned int dimDomain = Traits::dimDomain;
+  static const size_t dimDomain = Traits::dimDomain;
 
   BoundaryLHSPenalty(const LocalizableDiffusionFactorFunctionType& diffusion_factor,
                      const LocalizableDiffusionTensorFunctionType& diffusion_tensor,
@@ -684,7 +685,7 @@ public:
   /**
    * \brief extracts the local functions and calls the correct order() method
    */
-  template <class R, int rT, int rCT, int rA, int rCA>
+  template <class R, size_t rT, size_t rCT, size_t rA, size_t rCA>
   size_t
   order(const LocalfunctionTupleType& localFuncs,
         const Stuff::LocalfunctionSetInterface<EntityType, DomainFieldType, dimDomain, R, rT, rCT>& testBase,
@@ -698,7 +699,7 @@ public:
   /**
    * \brief extracts the local functions and calls the correct evaluate() method
    */
-  template <class IntersectionType, class R, int rT, int rCT, int rA, int rCA>
+  template <class IntersectionType, class R, size_t rT, size_t rCT, size_t rA, size_t rCA>
   void evaluate(const LocalfunctionTupleType& localFuncs,
                 const Stuff::LocalfunctionSetInterface<EntityType, DomainFieldType, dimDomain, R, rT, rCT>& testBase,
                 const Stuff::LocalfunctionSetInterface<EntityType, DomainFieldType, dimDomain, R, rA, rCA>& ansatzBase,
@@ -710,7 +711,7 @@ public:
     evaluate(*local_diffusion_factor, *local_diffusion_tensor, testBase, ansatzBase, intersection, localPoint, ret);
   }
 
-  template <class R, int rDF, int rCDF, int rDT, int rCDT, int rT, int rCT, int rA, int rCA>
+  template <class R, size_t rDF, size_t rCDF, size_t rDT, size_t rCDT, size_t rT, size_t rCT, size_t rA, size_t rCA>
   size_t
   order(const Stuff::LocalfunctionInterface<EntityType, DomainFieldType, dimDomain, R, rDF, rCDF>& localDiffusionFactor,
         const Stuff::LocalfunctionInterface<EntityType, DomainFieldType, dimDomain, R, rDT, rCDT>& localDiffusionTensor,
@@ -720,7 +721,8 @@ public:
     return localDiffusionFactor.order() + localDiffusionTensor.order() + testBase.order() + ansatzBase.order();
   } // size_t order< ... >(...)
 
-  template <class IntersectionType, class R, int rDF, int rCDF, int rDT, int rCDT, int rT, int rCT, int rA, int rCA>
+  template <class IntersectionType, class R, size_t rDF, size_t rCDF, size_t rDT, size_t rCDT, size_t rT, size_t rCT,
+            size_t rA, size_t rCA>
   void
   evaluate(const Stuff::LocalfunctionInterface<EntityType, DomainFieldType, dimDomain, R, rDF,
                                                rCDF>& /*localDiffusionFactor*/,
@@ -835,7 +837,7 @@ public:
   typedef typename Traits::LocalfunctionTupleType LocalfunctionTupleType;
   typedef typename Traits::EntityType EntityType;
   typedef typename Traits::DomainFieldType DomainFieldType;
-  static const unsigned int dimDomain = Traits::dimDomain;
+  static const size_t dimDomain = Traits::dimDomain;
 
   BoundaryRHS(const LocalizableDiffusionFactorFunctionType& diffusion_factor,
               const LocalizableDiffusionTensorFunctionType& diffusion_tensor,
@@ -858,7 +860,7 @@ public:
   /**
    * \brief extracts the local functions and calls the correct order() method
    */
-  template <class R, int r, int rC>
+  template <class R, size_t r, size_t rC>
   size_t order(const LocalfunctionTupleType& localFuncs,
                const Stuff::LocalfunctionSetInterface<EntityType, DomainFieldType, dimDomain, R, r, rC>& testBase) const
   {
@@ -871,7 +873,7 @@ public:
   /**
    * \brief extracts the local functions and calls the correct evaluate() method
    */
-  template <class IntersectionType, class R, int r, int rC>
+  template <class IntersectionType, class R, size_t r, size_t rC>
   void evaluate(const LocalfunctionTupleType& localFuncs,
                 const Stuff::LocalfunctionSetInterface<EntityType, DomainFieldType, dimDomain, R, r, rC>& testBase,
                 const IntersectionType& intersection,
@@ -884,7 +886,7 @@ public:
   }
 
 private:
-  template <class R, int rDF, int rCDF, int rDT, int rCDT, int rLR, int rCLR, int rT, int rCT>
+  template <class R, size_t rDF, size_t rCDF, size_t rDT, size_t rCDT, size_t rLR, size_t rCLR, size_t rT, size_t rCT>
   size_t
   order(const Stuff::LocalfunctionInterface<EntityType, DomainFieldType, dimDomain, R, rDF, rCDF>& localDiffusionFactor,
         const Stuff::LocalfunctionInterface<EntityType, DomainFieldType, dimDomain, R, rDT, rCDT>& localDiffusionTensor,
@@ -898,7 +900,8 @@ private:
     return std::max(testOrder + dirichletOrder, diffusionOrder + testGradientOrder + dirichletOrder);
   } // size_t order(...)
 
-  template <class IntersectionType, class R, int rDF, int rCDF, int rDT, int rCDT, int rLDR, int rCLDR, int rT, int rCT>
+  template <class IntersectionType, class R, size_t rDF, size_t rCDF, size_t rDT, size_t rCDT, size_t rLDR,
+            size_t rCLDR, size_t rT, size_t rCT>
   void evaluate(
       const Stuff::LocalfunctionInterface<EntityType, DomainFieldType, dimDomain, R, rDF,
                                           rCDF>& /*localDiffusionFactor*/,
diff --git a/dune/gdt/playground/operators/fluxreconstruction.hh b/dune/gdt/playground/operators/fluxreconstruction.hh
index 19c039cd6..02e6a8c81 100644
--- a/dune/gdt/playground/operators/fluxreconstruction.hh
+++ b/dune/gdt/playground/operators/fluxreconstruction.hh
@@ -28,7 +28,7 @@ class DiffusiveFluxReconstruction
 public:
   typedef typename GridViewType::template Codim<0>::Entity EntityType;
   typedef typename GridViewType::ctype DomainFieldType;
-  static const unsigned int dimDomain = GridViewType::dimension;
+  static const size_t dimDomain = GridViewType::dimension;
   typedef typename DiffusionFactorType::RangeFieldType FieldType;
   typedef typename DiffusionFactorType::DomainType DomainType;
 
diff --git a/dune/gdt/playground/spaces/block.hh b/dune/gdt/playground/spaces/block.hh
index c6571ab14..e13c3e68a 100644
--- a/dune/gdt/playground/spaces/block.hh
+++ b/dune/gdt/playground/spaces/block.hh
@@ -147,7 +147,7 @@ public:
     DUNE_THROW(NotImplemented, "I am not sure yet how to implement this!");
   }
 
-  template <class G, class S, int d, int r, int rC>
+  template <class G, class S, size_t d, size_t r, size_t rC>
   PatternType compute_pattern(const GridView<G>& /*local_grid_view*/,
                               const SpaceInterface<S, d, r, rC>& /*ansatz_space*/) const
   {
diff --git a/dune/gdt/playground/spaces/cg/fem-localfunctions.hh b/dune/gdt/playground/spaces/cg/fem-localfunctions.hh
index 9d9261c0e..b5b7a3e1b 100644
--- a/dune/gdt/playground/spaces/cg/fem-localfunctions.hh
+++ b/dune/gdt/playground/spaces/cg/fem-localfunctions.hh
@@ -41,14 +41,14 @@ namespace CG {
 
 
 // forward, to be used in the traits and to allow for specialization
-template <class GridPartImp, int polynomialOrder, class RangeFieldImp, int rangeDim, int rangeDimCols = 1>
+template <class GridPartImp, int polynomialOrder, class RangeFieldImp, size_t rangeDim, size_t rangeDimCols = 1>
 class FemLocalfunctionsBased
 {
   static_assert(Dune::AlwaysFalse<GridPartImp>::value, "Untested for these dimensions!");
 };
 
 
-template <class GridPartImp, int polynomialOrder, class RangeFieldImp, int rangeDim, int rangeDimCols>
+template <class GridPartImp, int polynomialOrder, class RangeFieldImp, size_t rangeDim, size_t rangeDimCols>
 class FemLocalfunctionsBasedTraits
 {
 public:
@@ -59,7 +59,7 @@ public:
 
 private:
   typedef typename GridPartType::ctype DomainFieldType;
-  static const unsigned int dimDomain = GridPartType::dimension;
+  static const size_t dimDomain = GridPartType::dimension;
 
 public:
   typedef RangeFieldImp RangeFieldType;
@@ -95,7 +95,7 @@ public:
   typedef double CommunicatorType;
 
 private:
-  template <class G, int p, class R, int r, int rC>
+  template <class G, int p, class R, size_t r, size_t rC>
   friend class FemLocalfunctionsBased;
 }; // class FemLocalfunctionsBasedTraits
 
@@ -116,7 +116,7 @@ public:
   typedef typename Traits::GridViewType GridViewType;
   static const int polOrder = Traits::polOrder;
   typedef typename GridPartType::ctype DomainFieldType;
-  static const unsigned int dimDomain = BaseType::dimension;
+  static const size_t dimDomain = BaseType::dimension;
 
 private:
   static_assert(GridPartType::dimension == dimDomain, "Dimension of GridPart has to match dimDomain");
@@ -124,8 +124,8 @@ private:
 public:
   typedef FieldVector<DomainFieldType, dimDomain> DomainType;
   typedef typename Traits::RangeFieldType RangeFieldType;
-  static const unsigned int dimRange     = BaseType::dimRange;
-  static const unsigned int dimRangeCols = BaseType::dimRangeCols;
+  static const size_t dimRange     = BaseType::dimRange;
+  static const size_t dimRangeCols = BaseType::dimRangeCols;
 
   typedef typename Traits::BackendType BackendType;
   typedef typename Traits::MapperType MapperType;
@@ -225,7 +225,7 @@ private:
 #else // HAVE_DUNE_FEM_LOCALFUNCTIONS
 
 
-template <class GridPartImp, int polynomialOrder, class RangeFieldImp, int rangeDim, int rangeDimCols = 1>
+template <class GridPartImp, int polynomialOrder, class RangeFieldImp, size_t rangeDim, size_t rangeDimCols = 1>
 class FemLocalfunctionsBased
 {
   static_assert(Dune::AlwaysFalse<GridPartImp>::value, "You are missing dune-fem-localfunctions!");
diff --git a/dune/gdt/playground/spaces/continuouslagrange/fem-localfunctions.hh b/dune/gdt/playground/spaces/continuouslagrange/fem-localfunctions.hh
index a2073fa87..f3ae26b46 100644
--- a/dune/gdt/playground/spaces/continuouslagrange/fem-localfunctions.hh
+++ b/dune/gdt/playground/spaces/continuouslagrange/fem-localfunctions.hh
@@ -15,7 +15,7 @@ namespace Spaces {
 namespace ContinuousLagrange {
 
 
-template <class GridPartImp, int polynomialOrder, class RangeFieldImp, int rangeDim, int rangeDimCols = 1>
+template <class GridPartImp, int polynomialOrder, class RangeFieldImp, size_t rangeDim, size_t rangeDimCols = 1>
 class DUNE_DEPRECATED_MSG("Use CG::FemLocalfunctionsBased instead (21.11.2014)!") FemLocalfunctionsBased
     : public CG::FemLocalfunctionsBased<GridPartImp, polynomialOrder, RangeFieldImp, rangeDim, rangeDimCols>
 {
diff --git a/dune/gdt/playground/spaces/dg/fem-localfunctions.hh b/dune/gdt/playground/spaces/dg/fem-localfunctions.hh
index aee042a0b..b3ab3da60 100644
--- a/dune/gdt/playground/spaces/dg/fem-localfunctions.hh
+++ b/dune/gdt/playground/spaces/dg/fem-localfunctions.hh
@@ -39,7 +39,7 @@ namespace DG {
 
 
 // forward, to be used in the traits and to allow for specialization
-template <class GridPartImp, int polynomialOrder, class RangeFieldImp, int rangeDim, int rangeDimCols = 1>
+template <class GridPartImp, int polynomialOrder, class RangeFieldImp, size_t rangeDim, size_t rangeDimCols = 1>
 class FemLocalfunctionsBased
 {
   static_assert(rangeDim == 1 && rangeDimCols == 1, "Not yet implemented (find suitable vector valued basis)!");
@@ -47,7 +47,7 @@ class FemLocalfunctionsBased
 };
 
 
-template <class GridPartImp, int polynomialOrder, class RangeFieldImp, int rangeDim, int rangeDimCols>
+template <class GridPartImp, int polynomialOrder, class RangeFieldImp, size_t rangeDim, size_t rangeDimCols>
 class FemLocalfunctionsBasedTraits
 {
   static_assert(polynomialOrder >= 1, "Wrong polOrder given!");
@@ -61,7 +61,7 @@ public:
 
 private:
   typedef typename GridPartType::ctype DomainFieldType;
-  static const unsigned int dimDomain = GridPartType::dimension;
+  static const size_t dimDomain = GridPartType::dimension;
   typedef typename GridPartType::GridType GridType;
   static_assert(dimDomain == 1 || Dune::Capabilities::hasSingleGeometryType<GridType>::v,
                 "This space is only implemented for fully simplicial grids!");
@@ -93,7 +93,7 @@ public:
   typedef double CommunicatorType;
 
 private:
-  template <class G, int p, class R, int r, int rC>
+  template <class G, int p, class R, size_t r, size_t rC>
   friend class FemLocalfunctionsBased;
 }; // class FemLocalfunctionsBasedTraits
 
@@ -113,16 +113,16 @@ public:
   typedef typename Traits::GridPartType GridPartType;
   typedef typename Traits::GridViewType GridViewType;
   typedef typename GridPartType::ctype DomainFieldType;
-  static const int polOrder           = Traits::polOrder;
-  static const unsigned int dimDomain = BaseType::dimDomain;
+  static const int polOrder     = Traits::polOrder;
+  static const size_t dimDomain = BaseType::dimDomain;
 
 private:
   static_assert(GridPartType::dimension == dimDomain, "Dimension of GridPart has to match dimDomain");
 
 public:
   typedef typename Traits::RangeFieldType RangeFieldType;
-  static const unsigned int dimRange     = BaseType::dimRange;
-  static const unsigned int dimRangeCols = BaseType::dimRangeCols;
+  static const size_t dimRange     = BaseType::dimRange;
+  static const size_t dimRangeCols = BaseType::dimRangeCols;
 
   typedef typename Traits::BackendType BackendType;
   typedef typename Traits::MapperType MapperType;
@@ -216,7 +216,7 @@ private:
 #else // HAVE_DUNE_FEM_LOCALFUNCTIONS
 
 
-template <class GridPartImp, int polynomialOrder, class RangeFieldImp, int rangeDim, int rangeDimCols = 1>
+template <class GridPartImp, int polynomialOrder, class RangeFieldImp, size_t rangeDim, size_t rangeDimCols = 1>
 class FemLocalfunctionsBased
 {
   static_assert(Dune::AlwaysFalse<GridPartImp>::value, "You are missing dune-fem-localfunctions!");
diff --git a/dune/gdt/playground/spaces/dg/fem.hh b/dune/gdt/playground/spaces/dg/fem.hh
index d4b63d80b..d03194b61 100644
--- a/dune/gdt/playground/spaces/dg/fem.hh
+++ b/dune/gdt/playground/spaces/dg/fem.hh
@@ -33,14 +33,14 @@ namespace DG {
 
 
 // forward, to be used in the traits and to allow for specialization
-template <class GridPartImp, int polynomialOrder, class RangeFieldImp, int rangeDim, int rangeDimCols = 1>
+template <class GridPartImp, int polynomialOrder, class RangeFieldImp, size_t rangeDim, size_t rangeDimCols = 1>
 class FemBased
 {
   static_assert(Dune::AlwaysFalse<GridPartImp>::value, "Untested for these dimensions!");
 };
 
 
-template <class GridPartImp, int polynomialOrder, class RangeFieldImp, int rangeDim, int rangeDimCols>
+template <class GridPartImp, int polynomialOrder, class RangeFieldImp, size_t rangeDim, size_t rangeDimCols>
 class FemBasedTraits
 {
 public:
@@ -52,7 +52,7 @@ public:
 
 private:
   typedef typename GridPartType::ctype DomainFieldType;
-  static const unsigned int dimDomain = GridPartType::dimension;
+  static const size_t dimDomain = GridPartType::dimension;
 
 public:
   typedef RangeFieldImp RangeFieldType;
@@ -86,10 +86,10 @@ class FemBased<GridPartImp, polynomialOrder, RangeFieldImp, 1, 1>
 public:
   typedef FemBasedTraits<GridPartImp, polynomialOrder, RangeFieldImp, 1, 1> Traits;
 
-  static const int polOrder              = Traits::polOrder;
-  static const unsigned int dimDomain    = BaseType::dimDomain;
-  static const unsigned int dimRange     = BaseType::dimRange;
-  static const unsigned int dimRangeCols = BaseType::dimRangeCols;
+  static const int polOrder        = Traits::polOrder;
+  static const size_t dimDomain    = BaseType::dimDomain;
+  static const size_t dimRange     = BaseType::dimRange;
+  static const size_t dimRangeCols = BaseType::dimRangeCols;
 
   typedef typename Traits::GridPartType GridPartType;
   typedef typename Traits::GridViewType GridViewType;
@@ -123,7 +123,7 @@ public:
 
   using BaseType::compute_pattern;
 
-  template <class G, class S, int d, int r, int rC>
+  template <class G, class S, size_t d, size_t r, size_t rC>
   PatternType compute_pattern(const GridView<G>& local_grid_view, const SpaceInterface<S, d, r, rC>& ansatz_space) const
   {
     return BaseType::compute_face_and_volume_pattern(local_grid_view, ansatz_space);
@@ -172,7 +172,7 @@ private:
 #else // HAVE_DUNE_FEM
 
 
-template <class GridPartImp, int polynomialOrder, class RangeFieldImp, int rangeDim, int rangeDimCols = 1>
+template <class GridPartImp, int polynomialOrder, class RangeFieldImp, size_t rangeDim, size_t rangeDimCols = 1>
 class FemBased
 {
   static_assert(Dune::AlwaysFalse<GridPartImp>::value, "You are missing dune-fem!");
diff --git a/dune/gdt/playground/spaces/dg/pdelab.hh b/dune/gdt/playground/spaces/dg/pdelab.hh
index 6940155ba..90c9ba971 100644
--- a/dune/gdt/playground/spaces/dg/pdelab.hh
+++ b/dune/gdt/playground/spaces/dg/pdelab.hh
@@ -38,14 +38,14 @@ namespace DG {
 
 
 // forward, to be used in the traits and to allow for specialization
-template <class GridViewImp, int polynomialOrder, class RangeFieldImp, int rangeDim, int rangeDimCols = 1>
+template <class GridViewImp, int polynomialOrder, class RangeFieldImp, size_t rangeDim, size_t rangeDimCols = 1>
 class PdelabBased
 {
   static_assert(Dune::AlwaysFalse<GridViewImp>::value, "Untested for this combination of dimensions!");
 }; // class PdelabBased
 
 
-template <class GridViewImp, int polynomialOrder, class RangeFieldImp, int rangeDim, int rangeDimCols = 1>
+template <class GridViewImp, int polynomialOrder, class RangeFieldImp, size_t rangeDim, size_t rangeDimCols = 1>
 class PdelabBasedTraits
 {
 public:
@@ -55,7 +55,7 @@ public:
 
 private:
   typedef typename GridViewType::ctype DomainFieldType;
-  static const unsigned int dimDomain = GridViewType::dimension;
+  static const size_t dimDomain = GridViewType::dimension;
 
 public:
   typedef RangeFieldImp RangeFieldType;
@@ -114,10 +114,10 @@ class PdelabBased<GridViewImp, polynomialOrder, RangeFieldImp, 1, 1>
 public:
   typedef PdelabBasedTraits<GridViewImp, polynomialOrder, RangeFieldImp, 1, 1> Traits;
 
-  static const int polOrder              = Traits::polOrder;
-  static const unsigned int dimDomain    = BaseType::dimDomain;
-  static const unsigned int dimRange     = BaseType::dimRange;
-  static const unsigned int dimRangeCols = BaseType::dimRangeCols;
+  static const int polOrder        = Traits::polOrder;
+  static const size_t dimDomain    = BaseType::dimDomain;
+  static const size_t dimRange     = BaseType::dimRange;
+  static const size_t dimRangeCols = BaseType::dimRangeCols;
 
   typedef typename Traits::GridViewType GridViewType;
   typedef typename Traits::RangeFieldType RangeFieldType;
@@ -186,7 +186,7 @@ public:
 
   using BaseType::compute_pattern;
 
-  template <class G, class S, int d, int r, int rC>
+  template <class G, class S, size_t d, size_t r, size_t rC>
   PatternType compute_pattern(const GridView<G>& local_grid_view, const SpaceInterface<S, d, r, rC>& ansatz_space) const
   {
     return BaseType::compute_face_and_volume_pattern(local_grid_view, ansatz_space);
@@ -234,7 +234,7 @@ private:
 #else // HAVE_DUNE_PDELAB
 
 
-template <class GridViewImp, int polynomialOrder, class RangeFieldImp, int rangeDim, int rangeDimCols = 1>
+template <class GridViewImp, int polynomialOrder, class RangeFieldImp, size_t rangeDim, size_t rangeDimCols = 1>
 class PdelabBased
 {
   static_assert(Dune::AlwaysFalse<GridViewImp>::value, "You are missing dune-pdelab!");
diff --git a/dune/gdt/playground/spaces/discontinuouslagrange/fem-localfunctions.hh b/dune/gdt/playground/spaces/discontinuouslagrange/fem-localfunctions.hh
index 477b9b232..e8028c3ed 100644
--- a/dune/gdt/playground/spaces/discontinuouslagrange/fem-localfunctions.hh
+++ b/dune/gdt/playground/spaces/discontinuouslagrange/fem-localfunctions.hh
@@ -15,7 +15,7 @@ namespace Spaces {
 namespace DiscontinuousLagrange {
 
 
-template <class GridPartImp, int polynomialOrder, class RangeFieldImp, int rangeDim, int rangeDimCols = 1>
+template <class GridPartImp, int polynomialOrder, class RangeFieldImp, size_t rangeDim, size_t rangeDimCols = 1>
 class DUNE_DEPRECATED_MSG("Use DG::FemLocalfunctionsBased instead (21.11.2014)!") FemLocalfunctionsBased
     : public DG::FemLocalfunctionsBased<GridPartImp, polynomialOrder, RangeFieldImp, rangeDim, rangeDimCols>
 {
diff --git a/dune/gdt/playground/spaces/discontinuouslagrange/fem.hh b/dune/gdt/playground/spaces/discontinuouslagrange/fem.hh
index 6b1cc1e4a..098f3dbc8 100644
--- a/dune/gdt/playground/spaces/discontinuouslagrange/fem.hh
+++ b/dune/gdt/playground/spaces/discontinuouslagrange/fem.hh
@@ -15,7 +15,7 @@ namespace Spaces {
 namespace DiscontinuousLagrange {
 
 
-template <class GridPartImp, int polynomialOrder, class RangeFieldImp, int rangeDim, int rangeDimCols = 1>
+template <class GridPartImp, int polynomialOrder, class RangeFieldImp, size_t rangeDim, size_t rangeDimCols = 1>
 class DUNE_DEPRECATED_MSG("Use DG::FemBased instead (21.11.2014)!") FemBased
     : public DG::FemBased<GridPartImp, polynomialOrder, RangeFieldImp, rangeDim, rangeDimCols>
 {
diff --git a/dune/gdt/playground/spaces/discontinuouslagrange/pdelab.hh b/dune/gdt/playground/spaces/discontinuouslagrange/pdelab.hh
index dd33af6b0..85407c0c6 100644
--- a/dune/gdt/playground/spaces/discontinuouslagrange/pdelab.hh
+++ b/dune/gdt/playground/spaces/discontinuouslagrange/pdelab.hh
@@ -15,7 +15,7 @@ namespace Spaces {
 namespace DiscontinuousLagrange {
 
 
-template <class GridPartImp, int polynomialOrder, class RangeFieldImp, int rangeDim, int rangeDimCols = 1>
+template <class GridPartImp, int polynomialOrder, class RangeFieldImp, size_t rangeDim, size_t rangeDimCols = 1>
 class DUNE_DEPRECATED_MSG("Use DG::PdelabBased instead (21.11.2014)!") PdelabBased
     : public DG::PdelabBased<GridPartImp, polynomialOrder, RangeFieldImp, rangeDim, rangeDimCols>
 {
diff --git a/dune/gdt/playground/spaces/finitevolume/default.hh b/dune/gdt/playground/spaces/finitevolume/default.hh
index 985951766..f7f1485b3 100644
--- a/dune/gdt/playground/spaces/finitevolume/default.hh
+++ b/dune/gdt/playground/spaces/finitevolume/default.hh
@@ -15,7 +15,7 @@ namespace Spaces {
 namespace FiniteVolume {
 
 
-template <class GridViewImp, class RangeFieldImp, int rangeDim, int rangeDimCols = 1>
+template <class GridViewImp, class RangeFieldImp, size_t rangeDim, size_t rangeDimCols = 1>
 class DUNE_DEPRECATED_MSG("Use FV::Default instead (19.11.2014)!") Default
     : public FV::Default<GridViewImp, RangeFieldImp, rangeDim, rangeDimCols>
 {
diff --git a/dune/gdt/playground/spaces/raviartthomas/fem-localfunctions.hh b/dune/gdt/playground/spaces/raviartthomas/fem-localfunctions.hh
index 6f880da8f..fe6267337 100644
--- a/dune/gdt/playground/spaces/raviartthomas/fem-localfunctions.hh
+++ b/dune/gdt/playground/spaces/raviartthomas/fem-localfunctions.hh
@@ -15,7 +15,7 @@ namespace Spaces {
 namespace RaviartThomas {
 
 
-template <class GridPartImp, int polynomialOrder, class RangeFieldImp, int rangeDim, int rangeDimCols = 1>
+template <class GridPartImp, int polynomialOrder, class RangeFieldImp, size_t rangeDim, size_t rangeDimCols = 1>
 class DUNE_DEPRECATED_MSG("Use RT::FemLocalfunctionsBased instead (21.11.2014)!") FemLocalfunctionsBased
     : public RT::FemLocalfunctionsBased<GridPartImp, polynomialOrder, RangeFieldImp, rangeDim, rangeDimCols>
 {
diff --git a/dune/gdt/playground/spaces/raviartthomas/pdelab.hh b/dune/gdt/playground/spaces/raviartthomas/pdelab.hh
index b3c4ed457..5e156fccc 100644
--- a/dune/gdt/playground/spaces/raviartthomas/pdelab.hh
+++ b/dune/gdt/playground/spaces/raviartthomas/pdelab.hh
@@ -15,7 +15,7 @@ namespace Spaces {
 namespace RaviartThomas {
 
 
-template <class GridPartImp, int polynomialOrder, class RangeFieldImp, int rangeDim, int rangeDimCols = 1>
+template <class GridPartImp, int polynomialOrder, class RangeFieldImp, size_t rangeDim, size_t rangeDimCols = 1>
 class DUNE_DEPRECATED_MSG("Use RT::PdelabBased instead (21.11.2014)!") PdelabBased
     : public RT::PdelabBased<GridPartImp, polynomialOrder, RangeFieldImp, rangeDim, rangeDimCols>
 {
diff --git a/dune/gdt/playground/spaces/rt/fem-localfunctions.hh b/dune/gdt/playground/spaces/rt/fem-localfunctions.hh
index 7eafa1d04..bc91d1692 100644
--- a/dune/gdt/playground/spaces/rt/fem-localfunctions.hh
+++ b/dune/gdt/playground/spaces/rt/fem-localfunctions.hh
@@ -39,7 +39,7 @@ namespace RT {
 
 
 // forward, to be used in the traits and to allow for specialization
-template <class GridPartImp, int polynomialOrder, class RangeFieldImp, int rangeDim, int rangeDimCols = 1>
+template <class GridPartImp, int polynomialOrder, class RangeFieldImp, size_t rangeDim, size_t rangeDimCols = 1>
 class FemLocalfunctionsBased
 {
   static_assert(Dune::AlwaysFalse<GridPartImp>::value, "Untested for these dimensions!");
@@ -47,7 +47,7 @@ class FemLocalfunctionsBased
 
 
 // forward, to allow for specialization
-template <class GridPartImp, int polynomialOrder, class RangeFieldImp, int rangeDim, int rangeDimCols>
+template <class GridPartImp, int polynomialOrder, class RangeFieldImp, size_t rangeDim, size_t rangeDimCols>
 class FemLocalfunctionsBasedTraits
 {
   static_assert(Dune::AlwaysFalse<GridPartImp>::value, "Untested for these dimensions!");
@@ -67,12 +67,12 @@ public:
 
 private:
   typedef typename GridPartType::ctype DomainFieldType;
-  static const unsigned int dimDomain = GridPartType::dimension;
+  static const size_t dimDomain = GridPartType::dimension;
 
 public:
   typedef RangeFieldImp RangeFieldType;
-  static const unsigned int dimRange     = 2;
-  static const unsigned int dimRangeCols = 1;
+  static const size_t dimRange     = 2;
+  static const size_t dimRangeCols = 1;
   typedef FemLocalfunctionsBased<GridPartType, polOrder, RangeFieldType, dimRange, dimRangeCols> derived_type;
 
 private:
@@ -98,7 +98,7 @@ public:
   static const bool needs_grid_view                       = false;
 
 private:
-  template <class G, int p, class R, int r, int rC>
+  template <class G, int p, class R, size_t r, size_t rC>
   friend class FemLocalfunctionsBased;
 }; // class FemLocalfunctionsBasedTraits< ..., 2, 1 >
 
@@ -118,11 +118,11 @@ public:
   typedef typename Traits::GridPartType GridPartType;
   typedef typename Traits::GridViewType GridViewType;
   typedef typename GridPartType::ctype DomainFieldType;
-  static const int polOrder           = Traits::polOrder;
-  static const unsigned int dimDomain = GridPartType::dimension;
+  static const int polOrder     = Traits::polOrder;
+  static const size_t dimDomain = GridPartType::dimension;
   typedef typename Traits::RangeFieldType RangeFieldType;
-  static const unsigned int dimRange     = Traits::dimRange;
-  static const unsigned int dimRangeCols = Traits::dimRangeCols;
+  static const size_t dimRange     = Traits::dimRange;
+  static const size_t dimRangeCols = Traits::dimRangeCols;
 
   typedef typename Traits::BackendType BackendType;
   typedef typename Traits::MapperType MapperType;
@@ -196,7 +196,7 @@ public:
 
   using BaseType::compute_pattern;
 
-  template <class G, class S, int d, int r, int rC>
+  template <class G, class S, size_t d, size_t r, size_t rC>
   PatternType compute_pattern(const GridView<G>& local_grid_view, const SpaceInterface<S, d, r, rC>& ansatz_space) const
   {
     return BaseType::compute_face_and_volume_pattern(local_grid_view, ansatz_space);
@@ -214,7 +214,7 @@ private:
 #else // HAVE_DUNE_FEM_LOCALFUNCTIONS
 
 
-template <class GridPartImp, int polynomialOrder, class RangeFieldImp, int rangeDim, int rangeDimCols = 1>
+template <class GridPartImp, int polynomialOrder, class RangeFieldImp, size_t rangeDim, size_t rangeDimCols = 1>
 class FemLocalfunctionsBased
 {
   static_assert(Dune::AlwaysFalse<GridPartImp>::value, "You are missing dune-fem-localfunctions!");
diff --git a/dune/gdt/products/base.hh b/dune/gdt/products/base.hh
index 6fc220cd2..011da103f 100644
--- a/dune/gdt/products/base.hh
+++ b/dune/gdt/products/base.hh
@@ -340,7 +340,7 @@ public:
 
   typedef typename GridViewType::template Codim<0>::Entity EntityType;
   typedef typename GridViewType::ctype DomainFieldType;
-  static const unsigned int dimDomain = GridViewType::dimension;
+  static const size_t dimDomain = GridViewType::dimension;
 
   template <class... Args>
   GenericBase(const GridViewType& grd_vw, Args&&... args)
@@ -354,7 +354,7 @@ public:
     return grid_view_;
   }
 
-  template <class RR, int rRR, int rCR, class RS, int rRS, int rCS>
+  template <class RR, size_t rRR, size_t rCR, class RS, size_t rRS, size_t rCS>
   FieldType
   apply2(const Stuff::LocalizableFunctionInterface<EntityType, DomainFieldType, dimDomain, RR, rRR, rCR>& range,
          const Stuff::LocalizableFunctionInterface<EntityType, DomainFieldType, dimDomain, RS, rRS, rCS>& source) const
diff --git a/dune/gdt/products/interfaces.hh b/dune/gdt/products/interfaces.hh
index 5ad361563..84f619ce5 100644
--- a/dune/gdt/products/interfaces.hh
+++ b/dune/gdt/products/interfaces.hh
@@ -68,7 +68,7 @@ public:
 
   typedef typename GridViewType::template Codim<0>::Entity EntityType;
   typedef typename GridViewType::ctype DomainFieldType;
-  static const unsigned int dimDomain = GridViewType::dimension;
+  static const size_t dimDomain = GridViewType::dimension;
 
 private:
   static_assert(std::is_base_of<Stuff::IsLocalizableFunction, SourceType>::value,
@@ -130,7 +130,7 @@ public:
   typedef typename MatrixType::ScalarType FieldType;
   typedef typename GridViewType::template Codim<0>::Entity EntityType;
   typedef typename GridViewType::ctype DomainFieldType;
-  static const unsigned int dimDomain = GridViewType::dimension;
+  static const size_t dimDomain = GridViewType::dimension;
 
   typedef Stuff::LA::SparsityPatternDefault PatternType;
 
diff --git a/dune/gdt/spaces/cg.hh b/dune/gdt/spaces/cg.hh
index b44ce8124..7f838dcc4 100644
--- a/dune/gdt/spaces/cg.hh
+++ b/dune/gdt/spaces/cg.hh
@@ -29,7 +29,7 @@ namespace Spaces {
 
 
 template <class GridType, Stuff::Grid::ChooseLayer layer_type, ChooseSpaceBackend backend_type, int polOrder,
-          class RangeFieldType, int dimRange, int dimRangeCols = 1>
+          class RangeFieldType, size_t dimRange, size_t dimRangeCols = 1>
 class CGProvider
 {
   static const Stuff::Grid::ChoosePartView part_view_type = ChooseGridPartView<backend_type>::type;
@@ -38,19 +38,19 @@ public:
   typedef typename Stuff::Grid::Layer<GridType, layer_type, part_view_type>::Type GridLayerType;
 
 private:
-  template <class G, int p, class R, int r, int rC, GDT::ChooseSpaceBackend b>
+  template <class G, int p, class R, size_t r, size_t rC, GDT::ChooseSpaceBackend b>
   struct SpaceChooser
   {
     static_assert(AlwaysFalse<G>::value, "No space available for this backend!");
   };
 
-  template <class G, int p, class R, int r, int rC>
+  template <class G, int p, class R, size_t r, size_t rC>
   struct SpaceChooser<G, p, R, r, rC, GDT::ChooseSpaceBackend::fem>
   {
     typedef GDT::Spaces::CG::FemBased<GridLayerType, p, R, r> Type;
   };
 
-  template <class G, int p, class R, int r, int rC>
+  template <class G, int p, class R, size_t r, size_t rC>
   struct SpaceChooser<G, p, R, r, rC, GDT::ChooseSpaceBackend::pdelab>
   {
     typedef GDT::Spaces::CG::PdelabBased<GridLayerType, p, R, r> Type;
@@ -69,13 +69,13 @@ public:
     return Type(grid_layer);
   }
 
-  static Type create(GridProviderType& grid_provider, const int level = 0)
+  static Type create(GridProviderType& grid_provider, const size_t level = 0)
   {
     return Type(grid_provider.template layer<layer_type, part_view_type>(level));
   }
 
 #if HAVE_DUNE_GRID_MULTISCALE
-  static Type create(const MsGridProviderType& grid_provider, const int level_or_subdomain = 0)
+  static Type create(const MsGridProviderType& grid_provider, const size_t level_or_subdomain = 0)
   {
     return Type(grid_provider.template layer<layer_type, part_view_type>(level_or_subdomain));
   }
@@ -84,7 +84,7 @@ public:
 
 
 template <class GridType, Stuff::Grid::ChooseLayer layer_type, ChooseSpaceBackend backend_type, int polOrder,
-          class RangeFieldType, int dimRange, int dimRangeCols = 1>
+          class RangeFieldType, size_t dimRange, size_t dimRangeCols = 1>
 class DUNE_DEPRECATED_MSG("Use CGProvider instead (02.02.2015)!") ContinuousLagrangeProvider
     : public CGProvider<GridType, layer_type, backend_type, polOrder, RangeFieldType, dimRange, dimRangeCols>
 {
diff --git a/dune/gdt/spaces/cg/fem.hh b/dune/gdt/spaces/cg/fem.hh
index 36a020984..721c578fa 100644
--- a/dune/gdt/spaces/cg/fem.hh
+++ b/dune/gdt/spaces/cg/fem.hh
@@ -34,14 +34,14 @@ namespace CG {
 
 
 // forward, to be used in the traits and to allow for specialization
-template <class GridPartImp, int polynomialOrder, class RangeFieldImp, int rangeDim, int rangeDimCols = 1>
+template <class GridPartImp, int polynomialOrder, class RangeFieldImp, size_t rangeDim, size_t rangeDimCols = 1>
 class FemBased
 {
   static_assert(Dune::AlwaysFalse<GridPartImp>::value, "Untested for these dimensions!");
 };
 
 
-template <class GridPartImp, int polynomialOrder, class RangeFieldImp, int rangeDim, int rangeDimCols>
+template <class GridPartImp, int polynomialOrder, class RangeFieldImp, size_t rangeDim, size_t rangeDimCols>
 class FemBasedTraits
 {
 public:
@@ -53,7 +53,7 @@ public:
 
 private:
   typedef typename GridPartType::ctype DomainFieldType;
-  static const unsigned int dimDomain = GridPartType::dimension;
+  static const size_t dimDomain = GridPartType::dimension;
 
 public:
   typedef RangeFieldImp RangeFieldType;
@@ -87,10 +87,10 @@ class FemBased<GridPartImp, polynomialOrder, RangeFieldImp, 1, 1>
 public:
   typedef FemBasedTraits<GridPartImp, polynomialOrder, RangeFieldImp, 1, 1> Traits;
 
-  static const int polOrder              = Traits::polOrder;
-  static const unsigned int dimDomain    = BaseType::dimDomain;
-  static const unsigned int dimRange     = BaseType::dimRange;
-  static const unsigned int dimRangeCols = BaseType::dimRangeCols;
+  static const int polOrder        = Traits::polOrder;
+  static const size_t dimDomain    = BaseType::dimDomain;
+  static const size_t dimRange     = BaseType::dimRange;
+  static const size_t dimRangeCols = BaseType::dimRangeCols;
 
   typedef typename Traits::GridPartType GridPartType;
   typedef typename Traits::GridViewType GridViewType;
@@ -176,7 +176,7 @@ private:
 #else // HAVE_DUNE_FEM
 
 
-template <class GridPartImp, int polynomialOrder, class RangeFieldImp, int rangeDim, int rangeDimCols = 1>
+template <class GridPartImp, int polynomialOrder, class RangeFieldImp, size_t rangeDim, size_t rangeDimCols = 1>
 class FemBased
 {
   static_assert(Dune::AlwaysFalse<GridPartImp>::value, "You are missing dune-fem!");
diff --git a/dune/gdt/spaces/cg/interface.hh b/dune/gdt/spaces/cg/interface.hh
index d47f7630c..7128c6253 100644
--- a/dune/gdt/spaces/cg/interface.hh
+++ b/dune/gdt/spaces/cg/interface.hh
@@ -6,6 +6,8 @@
 #ifndef DUNE_GDT_SPACES_CG_INTERFACE_HH
 #define DUNE_GDT_SPACES_CG_INTERFACE_HH
 
+#include <boost/numeric/conversion/cast.hpp>
+
 #include <dune/common/dynvector.hh>
 #include <dune/common/version.hh>
 #include <dune/common/typetraits.hh>
@@ -26,7 +28,7 @@ namespace GDT {
 namespace Spaces {
 
 
-template <class ImpTraits, int domainDim, class RangeFieldImp, int rangeDim, int rangeDimCols = 1>
+template <class ImpTraits, size_t domainDim, class RangeFieldImp, size_t rangeDim, size_t rangeDimCols = 1>
 class CGInterface : public SpaceInterface<ImpTraits, domainDim, rangeDim, rangeDimCols>
 {
   typedef SpaceInterface<ImpTraits, domainDim, rangeDim, rangeDimCols> BaseType;
@@ -85,13 +87,13 @@ public:
     typedef typename BaseType::BaseFunctionSetType::RangeType RangeType;
     std::vector<RangeType> tmp_basis_values(basis.size(), RangeType(0));
     const auto& reference_element = ReferenceElements<DomainFieldType, dimDomain>::general(entity.type());
-    const int num_vertices = reference_element.size(dimDomain);
+    const auto num_vertices = reference_element.size(dimDomain);
     assert(num_vertices >= 0);
-    assert(size_t(num_vertices) == basis.size() && "This should not happen with polOrder 1!");
+    assert(boost::numeric_cast<size_t>(num_vertices) == basis.size() && "This should not happen with polOrder 1!");
     // prepare return vector
     std::vector<DomainType> local_vertices(num_vertices, DomainType(0));
     // loop over all vertices
-    for (int ii = 0; ii < num_vertices; ++ii) {
+    for (auto ii : DSC::valueRange(num_vertices)) {
       // get the local coordinate of the iith vertex
       const auto local_vertex = reference_element.position(ii, dimDomain);
       // evaluate the basefunctionset
@@ -135,7 +137,7 @@ public:
       if (boundaryInfo.dirichlet(intersection) || (!intersection.neighbor() && !intersection.boundary())) {
         // and get the vertices of the intersection
         const auto geometry = intersection.geometry();
-        for (int cc = 0; cc < geometry.corners(); ++cc)
+        for (auto cc : DSC::valueRange(geometry.corners()))
           dirichlet_vertices.emplace_back(entity.geometry().local(geometry.corner(cc)));
       } // only work on dirichlet ones
     } // loop over all intersections
@@ -165,7 +167,7 @@ public:
 
   using BaseType::compute_pattern;
 
-  template <class G, class S, int d, int r, int rC>
+  template <class G, class S, size_t d, size_t r, size_t rC>
   PatternType compute_pattern(const GridView<G>& local_grid_view, const SpaceInterface<S, d, r, rC>& ansatz_space) const
   {
     return BaseType::compute_volume_pattern(local_grid_view, ansatz_space);
@@ -173,14 +175,14 @@ public:
 
   using BaseType::local_constraints;
 
-  template <class S, int d, int r, int rC, class ConstraintsType>
+  template <class S, size_t d, size_t r, size_t rC, class ConstraintsType>
   void local_constraints(const SpaceInterface<S, d, r, rC>& /*other*/, const EntityType& /*entity*/,
                          ConstraintsType& /*ret*/) const
   {
     static_assert(AlwaysFalse<S>::value, "Not implemented for these constraints!");
   } // ... local_constraints(...)
 
-  template <class S, int d, int r, int rC>
+  template <class S, size_t d, size_t r, size_t rC>
   void local_constraints(const SpaceInterface<S, d, r, rC>& other, const EntityType& entity,
                          Constraints::Dirichlet<IntersectionType, RangeFieldType>& ret) const
   {
diff --git a/dune/gdt/spaces/cg/pdelab.hh b/dune/gdt/spaces/cg/pdelab.hh
index 8cb52e20b..590d695aa 100644
--- a/dune/gdt/spaces/cg/pdelab.hh
+++ b/dune/gdt/spaces/cg/pdelab.hh
@@ -44,14 +44,14 @@ namespace CG {
 
 
 // forward, to be used in the traits and to allow for specialization
-template <class GridViewImp, int polynomialOrder, class RangeFieldImp, int rangeDim, int rangeDimCols = 1>
+template <class GridViewImp, int polynomialOrder, class RangeFieldImp, size_t rangeDim, size_t rangeDimCols = 1>
 class PdelabBased
 {
   static_assert(Dune::AlwaysFalse<GridViewImp>::value, "Untested for this combination of dimensions!");
 };
 
 
-template <class GridViewImp, int polynomialOrder, class RangeFieldImp, int rangeDim, int rangeDimCols = 1>
+template <class GridViewImp, int polynomialOrder, class RangeFieldImp, size_t rangeDim, size_t rangeDimCols = 1>
 class PdelabBasedTraits
 {
 public:
@@ -62,7 +62,7 @@ public:
 
 private:
   typedef typename GridViewType::ctype DomainFieldType;
-  static const unsigned int dimDomain = GridViewType::dimension;
+  static const size_t dimDomain = GridViewType::dimension;
 
 public:
   typedef RangeFieldImp RangeFieldType;
@@ -121,10 +121,10 @@ class PdelabBased<GridViewImp, polynomialOrder, RangeFieldImp, 1, 1>
 public:
   typedef PdelabBasedTraits<GridViewImp, polynomialOrder, RangeFieldImp, 1, 1> Traits;
 
-  static const int polOrder              = Traits::polOrder;
-  static const unsigned int dimDomain    = BaseType::dimDomain;
-  static const unsigned int dimRange     = BaseType::dimRange;
-  static const unsigned int dimRangeCols = BaseType::dimRangeCols;
+  static const int polOrder        = Traits::polOrder;
+  static const size_t dimDomain    = BaseType::dimDomain;
+  static const size_t dimRange     = BaseType::dimRange;
+  static const size_t dimRangeCols = BaseType::dimRangeCols;
 
   typedef typename Traits::GridViewType GridViewType;
   typedef typename Traits::RangeFieldType RangeFieldType;
@@ -243,7 +243,7 @@ private:
 #else // HAVE_DUNE_PDELAB
 
 
-template <class GridViewImp, int polynomialOrder, class RangeFieldImp, int rangeDim, int rangeDimCols = 1>
+template <class GridViewImp, int polynomialOrder, class RangeFieldImp, size_t rangeDim, size_t rangeDimCols = 1>
 class PdelabBased
 {
   static_assert(Dune::AlwaysFalse<GridViewImp>::value, "You are missing dune-pdelab!");
diff --git a/dune/gdt/spaces/continuouslagrange/base.hh b/dune/gdt/spaces/continuouslagrange/base.hh
index cee839551..ac1fd909f 100644
--- a/dune/gdt/spaces/continuouslagrange/base.hh
+++ b/dune/gdt/spaces/continuouslagrange/base.hh
@@ -27,7 +27,7 @@ namespace Spaces {
 
 
 // forward, to allow for specialization
-template <class ImpTraits, int domainDim, class RangeFieldImp, int rangeDim, int rangeDimCols = 1>
+template <class ImpTraits, size_t domainDim, class RangeFieldImp, size_t rangeDim, size_t rangeDimCols = 1>
 class DUNE_DEPRECATED_MSG("Include <dune/gdt/spaces/cg/fem.hh> and use CGInterface instead (21.11.2014)!")
     ContinuousLagrangeBase
 {
@@ -35,7 +35,7 @@ class DUNE_DEPRECATED_MSG("Include <dune/gdt/spaces/cg/fem.hh> and use CGInterfa
 };
 
 
-template <class ImpTraits, int domainDim, class RangeFieldImp, int rangeDim>
+template <class ImpTraits, size_t domainDim, class RangeFieldImp, size_t rangeDim>
 class DUNE_DEPRECATED_MSG("Include <dune/gdt/spaces/cg/fem.hh> and use CGInterface instead (21.11.2014)!")
     ContinuousLagrangeBase<ImpTraits, domainDim, RangeFieldImp, rangeDim, 1>
     : public SpaceInterface<ImpTraits, domainDim, rangeDim, 1>
@@ -69,7 +69,7 @@ public:
 
   using BaseType::compute_pattern;
 
-  template <class G, class S, int d, int r, int rC>
+  template <class G, class S, size_t d, size_t r, size_t rC>
   PatternType compute_pattern(const GridView<G>& local_grid_view, const SpaceInterface<S, d, r, rC>& ansatz_space) const
   {
     return BaseType::compute_volume_pattern(local_grid_view, ansatz_space);
@@ -167,14 +167,14 @@ public:
 
   using BaseType::local_constraints;
 
-  template <class S, int d, int r, int rC, class ConstraintsType>
+  template <class S, size_t d, size_t r, size_t rC, class ConstraintsType>
   void local_constraints(const SpaceInterface<S, d, r, rC>& /*other*/, const EntityType& /*entity*/,
                          ConstraintsType& /*ret*/) const
   {
     static_assert(AlwaysFalse<S>::value, "Not implemented for these constraints!");
   }
 
-  template <class S, int d, int r, int rC>
+  template <class S, size_t d, size_t r, size_t rC>
   void local_constraints(const SpaceInterface<S, d, r, rC>& other, const EntityType& entity,
                          Constraints::Dirichlet<IntersectionType, RangeFieldType>& ret) const
   {
diff --git a/dune/gdt/spaces/continuouslagrange/fem.hh b/dune/gdt/spaces/continuouslagrange/fem.hh
index a64d0dc9f..beec2e74f 100644
--- a/dune/gdt/spaces/continuouslagrange/fem.hh
+++ b/dune/gdt/spaces/continuouslagrange/fem.hh
@@ -15,7 +15,7 @@ namespace Spaces {
 namespace ContinuousLagrange {
 
 
-template <class GridPartImp, int polynomialOrder, class RangeFieldImp, int rangeDim, int rangeDimCols = 1>
+template <class GridPartImp, int polynomialOrder, class RangeFieldImp, size_t rangeDim, size_t rangeDimCols = 1>
 class DUNE_DEPRECATED_MSG("Use CG::FemBased instead (21.11.2014)!") FemBased
     : public CG::FemBased<GridPartImp, polynomialOrder, RangeFieldImp, rangeDim, rangeDimCols>
 {
diff --git a/dune/gdt/spaces/continuouslagrange/pdelab.hh b/dune/gdt/spaces/continuouslagrange/pdelab.hh
index 5fc32a54c..882fd6c95 100644
--- a/dune/gdt/spaces/continuouslagrange/pdelab.hh
+++ b/dune/gdt/spaces/continuouslagrange/pdelab.hh
@@ -15,7 +15,7 @@ namespace Spaces {
 namespace ContinuousLagrange {
 
 
-template <class GridPartImp, int polynomialOrder, class RangeFieldImp, int rangeDim, int rangeDimCols = 1>
+template <class GridPartImp, int polynomialOrder, class RangeFieldImp, size_t rangeDim, size_t rangeDimCols = 1>
 class DUNE_DEPRECATED_MSG("Use CG::FemBased instead (21.11.2014)!") PdelabBased
     : public CG::PdelabBased<GridPartImp, polynomialOrder, RangeFieldImp, rangeDim, rangeDimCols>
 {
diff --git a/dune/gdt/spaces/dg.hh b/dune/gdt/spaces/dg.hh
index 0e5594f88..c3d852174 100644
--- a/dune/gdt/spaces/dg.hh
+++ b/dune/gdt/spaces/dg.hh
@@ -29,7 +29,7 @@ namespace Spaces {
 
 
 template <class GridType, Stuff::Grid::ChooseLayer layer_type, ChooseSpaceBackend backend_type, int polOrder,
-          class RangeFieldType, int dimRange, int dimRangeCols = 1>
+          class RangeFieldType, size_t dimRange, size_t dimRangeCols = 1>
 class DGProvider
 {
   static const Stuff::Grid::ChoosePartView part_view_type = ChooseGridPartView<backend_type>::type;
@@ -38,19 +38,19 @@ public:
   typedef typename Stuff::Grid::Layer<GridType, layer_type, part_view_type>::Type GridLayerType;
 
 private:
-  template <class G, int p, class R, int r, int rC, GDT::ChooseSpaceBackend b>
+  template <class G, int p, class R, size_t r, size_t rC, GDT::ChooseSpaceBackend b>
   struct SpaceChooser
   {
     static_assert(AlwaysFalse<G>::value, "No space available for this backend!");
   };
 
-  template <class G, int p, class R, int r, int rC>
+  template <class G, int p, class R, size_t r, size_t rC>
   struct SpaceChooser<G, p, R, r, rC, GDT::ChooseSpaceBackend::fem>
   {
     typedef GDT::Spaces::DG::FemBased<GridLayerType, p, R, r> Type;
   };
 
-  template <class G, int p, class R, int r, int rC>
+  template <class G, int p, class R, size_t r, size_t rC>
   struct SpaceChooser<G, p, R, r, rC, GDT::ChooseSpaceBackend::pdelab>
   {
     typedef GDT::Spaces::DG::PdelabBased<GridLayerType, p, R, r> Type;
@@ -69,13 +69,13 @@ public:
     return Type(grid_layer);
   }
 
-  static Type create(GridProviderType& grid_provider, const int level = 0)
+  static Type create(GridProviderType& grid_provider, const size_t level = 0)
   {
     return Type(grid_provider.template layer<layer_type, part_view_type>(level));
   }
 
 #if HAVE_DUNE_GRID_MULTISCALE
-  static Type create(const MsGridProviderType& grid_provider, const int level_or_subdomain = 0)
+  static Type create(const MsGridProviderType& grid_provider, const size_t level_or_subdomain = 0)
   {
     return Type(grid_provider.template layer<layer_type, part_view_type>(level_or_subdomain));
   }
@@ -84,7 +84,7 @@ public:
 
 
 template <class GridType, Stuff::Grid::ChooseLayer layer_type, ChooseSpaceBackend backend_type, int polOrder,
-          class RangeFieldType, int dimRange, int dimRangeCols = 1>
+          class RangeFieldType, size_t dimRange, size_t dimRangeCols = 1>
 class DUNE_DEPRECATED_MSG("Use DGProvider instead (02.02.2015)!") DiscontinuousLagrangeProvider
     : public DGProvider<GridType, layer_type, backend_type, polOrder, RangeFieldType, dimRange, dimRangeCols>
 {
diff --git a/dune/gdt/spaces/fv/default.hh b/dune/gdt/spaces/fv/default.hh
index 8a984226d..a52605930 100644
--- a/dune/gdt/spaces/fv/default.hh
+++ b/dune/gdt/spaces/fv/default.hh
@@ -22,7 +22,7 @@ namespace FV {
 
 
 // forward, to be used in the traits and to allow for specialization
-template <class GridViewImp, class RangeFieldImp, int rangeDim, int rangeDimCols = 1>
+template <class GridViewImp, class RangeFieldImp, size_t rangeDim, size_t rangeDimCols = 1>
 class Default
 {
   static_assert(Dune::AlwaysFalse<GridViewImp>::value, "Untested for these dimensions!");
@@ -32,7 +32,7 @@ class Default
 /**
  *  \brief Traits class for Spaces::CG::FemBased.
  */
-template <class GridViewImp, class RangeFieldImp, int rangeDim, int rangeDimCols>
+template <class GridViewImp, class RangeFieldImp, size_t rangeDim, size_t rangeDimCols>
 class DefaultTraits
 {
 public:
@@ -53,7 +53,7 @@ public:
 }; // class DefaultTraits
 
 
-template <class GridViewImp, class RangeFieldImp, int rangeDim>
+template <class GridViewImp, class RangeFieldImp, size_t rangeDim>
 class Default<GridViewImp, RangeFieldImp, rangeDim, 1>
     : public SpaceInterface<DefaultTraits<GridViewImp, RangeFieldImp, rangeDim, 1>, GridViewImp::dimension, rangeDim, 1>
 {
@@ -64,10 +64,10 @@ class Default<GridViewImp, RangeFieldImp, rangeDim, 1>
 public:
   typedef DefaultTraits<GridViewImp, RangeFieldImp, rangeDim, 1> Traits;
 
-  static const int polOrder              = Traits::polOrder;
-  static const unsigned int dimDomain    = BaseType::dimDomain;
-  static const unsigned int dimRange     = BaseType::dimRange;
-  static const unsigned int dimRangeCols = BaseType::dimRangeCols;
+  static const int polOrder        = Traits::polOrder;
+  static const size_t dimDomain    = BaseType::dimDomain;
+  static const size_t dimRange     = BaseType::dimRange;
+  static const size_t dimRangeCols = BaseType::dimRangeCols;
 
   typedef typename Traits::GridViewType GridViewType;
   typedef typename Traits::RangeFieldType RangeFieldType;
@@ -123,7 +123,7 @@ public:
 
   using BaseType::compute_pattern;
 
-  template <class G, class S, int d, int r, int rC>
+  template <class G, class S, size_t d, size_t r, size_t rC>
   PatternType compute_pattern(const GridView<G>& local_grid_view, const SpaceInterface<S, d, r, rC>& ansatz_space) const
   {
     return BaseType::compute_face_and_volume_pattern(local_grid_view, ansatz_space);
diff --git a/dune/gdt/spaces/interface.hh b/dune/gdt/spaces/interface.hh
index dffa83910..9f1675032 100644
--- a/dune/gdt/spaces/interface.hh
+++ b/dune/gdt/spaces/interface.hh
@@ -8,6 +8,8 @@
 
 #include <memory>
 
+#include <boost/numeric/conversion/cast.hpp>
+
 #include <dune/common/dynvector.hh>
 #include <dune/common/fvector.hh>
 
@@ -62,7 +64,7 @@ struct ChooseGridPartView<ChooseSpaceBackend::fem>
 };
 
 
-template <class Traits, int domainDim, int rangeDim, int rangeDimCols = 1>
+template <class Traits, size_t domainDim, size_t rangeDim, size_t rangeDimCols = 1>
 class SpaceInterface : public Stuff::CRTPInterface<SpaceInterface<Traits, domainDim, rangeDim, rangeDimCols>, Traits>
 {
 public:
@@ -74,9 +76,9 @@ public:
   typedef typename Traits::CommunicatorType CommunicatorType;
   typedef typename Traits::GridViewType GridViewType;
   typedef typename Traits::RangeFieldType RangeFieldType;
-  static const unsigned int dimDomain    = domainDim;
-  static const unsigned int dimRange     = rangeDim;
-  static const unsigned int dimRangeCols = rangeDimCols;
+  static const size_t dimDomain    = domainDim;
+  static const size_t dimRange     = rangeDim;
+  static const size_t dimRangeCols = rangeDimCols;
 
 private:
   static_assert(dimDomain > 0, "dimDomain has to be positive");
@@ -140,14 +142,14 @@ public:
    *
    *  \note  Any derived class has to implement this method, even if it does not support any kind of constraints!
    *         In that case just provide exactly the following method:\code
-template< class S, int d, int r, int rC, class ConstraintsType >
+template< class S, size_t d, size_t r, size_t rC, class ConstraintsType >
 void local_constraints(const SpaceInterface< S, d, r, rC > >&, const EntityType&, ConstraintsType&) const
 {
   static_assert(AlwaysFalse< S >::value, "Not implemented for these constraints!");
 }
 \endcode
    */
-  template <class S, int d, int r, int rC, class C>
+  template <class S, size_t d, size_t r, size_t rC, class C>
   void local_constraints(const SpaceInterface<S, d, r, rC>& ansatz_space, const EntityType& entity,
                          Spaces::ConstraintsInterface<C, RangeFieldType>& ret) const
   {
@@ -165,7 +167,7 @@ void local_constraints(const SpaceInterface< S, d, r, rC > >&, const EntityType&
    *  \note   This method can be implemented in a derived class by a forward to one of the methods provided by this
    * class, namely compute_volume_pattern(), compute_face_pattern() or compute_face_and_volume_pattern().
    */
-  template <class G, class S, int d, int r, int rC>
+  template <class G, class S, size_t d, size_t r, size_t rC>
   PatternType compute_pattern(const GridView<G>& local_grid_view, const SpaceInterface<S, d, r, rC>& ansatz_space) const
   {
     CHECK_CRTP(this->as_imp().compute_pattern(local_grid_view, ansatz_space.as_imp()));
@@ -183,7 +185,7 @@ void local_constraints(const SpaceInterface< S, d, r, rC > >&, const EntityType&
     return compute_pattern(*this);
   }
 
-  template <class S, int d, int r, int rC>
+  template <class S, size_t d, size_t r, size_t rC>
   PatternType compute_pattern(const SpaceInterface<S, d, r, rC>& ansatz_space) const
   {
     return compute_pattern(grid_view(), ansatz_space);
@@ -200,7 +202,7 @@ void local_constraints(const SpaceInterface< S, d, r, rC > >&, const EntityType&
     return compute_volume_pattern(*this);
   }
 
-  template <class S, int d, int r, int rC>
+  template <class S, size_t d, size_t r, size_t rC>
   PatternType compute_volume_pattern(const SpaceInterface<S, d, r, rC>& ansatz_space) const
   {
     return compute_volume_pattern(grid_view(), ansatz_space);
@@ -216,7 +218,7 @@ void local_constraints(const SpaceInterface< S, d, r, rC > >&, const EntityType&
    *  \brief  computes a sparsity pattern, where this space is the test space (rows/outer) and the other space is the
    *          ansatz space (cols/inner)
    */
-  template <class G, class S, int d, int r, int rC>
+  template <class G, class S, size_t d, size_t r, size_t rC>
   PatternType compute_volume_pattern(const GridView<G>& local_grid_view,
                                      const SpaceInterface<S, d, r, rC>& ansatz_space) const
   {
@@ -250,7 +252,7 @@ void local_constraints(const SpaceInterface< S, d, r, rC > >&, const EntityType&
     return compute_face_and_volume_pattern(local_grid_view, *this);
   }
 
-  template <class S, int d, int r, int rC>
+  template <class S, size_t d, size_t r, size_t rC>
   PatternType compute_face_and_volume_pattern(const SpaceInterface<S, d, r, rC>& ansatz_space) const
   {
     return compute_face_and_volume_pattern(grid_view(), ansatz_space);
@@ -260,7 +262,7 @@ void local_constraints(const SpaceInterface< S, d, r, rC > >&, const EntityType&
    *  \brief  computes a DG sparsity pattern, where this space is the test space (rows/outer) and the other space is the
    *          ansatz space (cols/inner)
    */
-  template <class G, class S, int d, int r, int rC>
+  template <class G, class S, size_t d, size_t r, size_t rC>
   PatternType compute_face_and_volume_pattern(const GridView<G>& local_grid_view,
                                               const SpaceInterface<S, d, r, rC>& ansatz_space) const
   {
@@ -315,13 +317,13 @@ void local_constraints(const SpaceInterface< S, d, r, rC > >&, const EntityType&
     return compute_face_pattern(local_grid_view, *this);
   }
 
-  template <class S, int d, int r, int rC>
+  template <class S, size_t d, size_t r, size_t rC>
   PatternType compute_face_pattern(const SpaceInterface<S, d, r, rC>& ansatz_space) const
   {
     return compute_face_pattern(grid_view(), ansatz_space);
   }
 
-  template <class G, class S, int d, int r, int rC>
+  template <class G, class S, size_t d, size_t r, size_t rC>
   PatternType compute_face_pattern(const /*GridView<*/ G /*>*/& local_grid_view,
                                    const SpaceInterface<S, d, r, rC>& ansatz_space) const
   {
@@ -394,11 +396,11 @@ private:
       const auto baseFunctionSet = space_.base_function_set(entity);
       if (component < 0)
         DUNE_THROW(Dune::RangeError, "component must not be negative (is " << component << ")!");
-      if (component < int(baseFunctionSet.size())) {
+      if (component < boost::numeric_cast<int>(baseFunctionSet.size())) {
         baseFunctionSet.evaluate(xx, values_);
-        assert(component < int(values_.size()) && "This should not happen!");
+        assert(component < boost::numeric_cast<int>(values_.size()) && "This should not happen!");
         return values_[index_][component];
-      } else if (component < int(space_.mapper().maxNumDofs()))
+      } else if (component < boost::numeric_cast<int>(space_.mapper().maxNumDofs()))
         return 0.0;
       else
         DUNE_THROW(Dune::RangeError,
@@ -441,14 +443,14 @@ public:
 }; // class SpaceInterface
 
 
-template <class Traits, int d, int r, int rC, int codim = 0>
+template <class Traits, size_t d, size_t r, size_t rC, size_t codim = 0>
 typename Traits::GridViewType::template Codim<codim>::Iterator
 begin(const Dune::GDT::SpaceInterface<Traits, d, r, rC>& space)
 {
   return space.grid_view().template begin<codim>();
 }
 
-template <class Traits, int d, int r, int rC, int codim = 0>
+template <class Traits, size_t d, size_t r, size_t rC, size_t codim = 0>
 typename Traits::GridViewType::template Codim<codim>::Iterator
 end(const Dune::GDT::SpaceInterface<Traits, d, r, rC>& space)
 {
diff --git a/dune/gdt/spaces/rt/interface.hh b/dune/gdt/spaces/rt/interface.hh
index 9ad62c1e4..72dd0ea46 100644
--- a/dune/gdt/spaces/rt/interface.hh
+++ b/dune/gdt/spaces/rt/interface.hh
@@ -6,6 +6,8 @@
 #ifndef DUNE_GDT_SPACES_RT_INTERFACE_HH
 #define DUNE_GDT_SPACES_RT_INTERFACE_HH
 
+#include <boost/numeric/conversion/cast.hpp>
+
 #include <dune/stuff/common/timedlogging.hh>
 
 #include <dune/gdt/spaces/interface.hh>
@@ -15,7 +17,7 @@ namespace GDT {
 namespace Spaces {
 
 
-template <class ImpTraits, int domainDim, class RangeFieldImp, int rangeDim, int rangeDimCols = 1>
+template <class ImpTraits, size_t domainDim, class RangeFieldImp, size_t rangeDim, size_t rangeDimCols = 1>
 class RTInterface : public SpaceInterface<ImpTraits, domainDim, rangeDim, rangeDimCols>
 {
   typedef SpaceInterface<ImpTraits, domainDim, rangeDim, rangeDimCols> BaseType;
@@ -56,7 +58,7 @@ public:
     static_assert(dimDomain == 2, "Not implemented!");
     static_assert(polOrder == 0, "Not implemented!");
     // prepare
-    const size_t num_intersections = entity.template count<1>();
+    const auto num_intersections = boost::numeric_cast<size_t>(entity.template count<1>());
     std::vector<size_t> local_DoF_index_of_vertex(num_intersections, std::numeric_limits<size_t>::infinity());
     std::vector<size_t> local_DoF_index_of_intersection(num_intersections, std::numeric_limits<size_t>::infinity());
     typedef typename BaseFunctionSetType::DomainType DomainType;
@@ -73,13 +75,13 @@ public:
     // find the basis function index that corresponds to each vertex of the entity
     // (find the basis function that evaluates to zero at the vertex, and nonzero at the other ones)
     // therefore we walk the vertices
-    assert(int(num_intersections) == entity.template count<dimDomain>());
+    assert(num_intersections == boost::numeric_cast<size_t>(entity.template count<dimDomain>()));
     for (size_t vv = 0; vv < num_intersections; ++vv) {
-      const auto vertex_ptr = entity.template subEntity<dimDomain>(int(vv));
+      const auto vertex_ptr = entity.template subEntity<dimDomain>(boost::numeric_cast<int>(vv));
       const auto& vertex    = *vertex_ptr;
       // get the vertex coordinates
       vertices[vv]              = vertex.geometry().center();
-      const auto& vertex_entity = reference_element.position(int(vv), dimDomain);
+      const auto& vertex_entity = reference_element.position(boost::numeric_cast<int>(vv), dimDomain);
       // evalaute the basis
       basis.evaluate(vertex_entity, basis_values);
       // and find the basis that evaluates zero here
@@ -118,7 +120,7 @@ public:
       assert(local_DoF_index_of_intersection[local_intersection_index] == std::numeric_limits<size_t>::infinity());
       // walk the corners of the intersection
       for (size_t cc = 0; cc < num_intersections; ++cc) {
-        corner = intersection_geometry.corner(int(cc));
+        corner = intersection_geometry.corner(boost::numeric_cast<int>(cc));
         // check which vertices lie on the intersection
         for (size_t vv = 0; vv < num_intersections; ++vv)
           if (Stuff::Common::FloatCmp::eq(vertices[vv], corner))
@@ -155,7 +157,7 @@ public:
 
   using BaseType::compute_pattern;
 
-  template <class G, class S, int d, int r, int rC>
+  template <class G, class S, size_t d, size_t r, size_t rC>
   PatternType compute_pattern(const GridView<G>& local_grid_view, const SpaceInterface<S, d, r, rC>& ansatz_space) const
   {
     DSC::TimedLogger().get("gdt.spaces.rt.pdelab.compute_pattern").warn() << "Returning largest possible pattern!"
@@ -165,7 +167,7 @@ public:
 
   using BaseType::local_constraints;
 
-  template <class S, int d, int r, int rC, class C, class R>
+  template <class S, size_t d, size_t r, size_t rC, class C, class R>
   void local_constraints(const SpaceInterface<S, d, r, rC>& /*ansatz_space*/, const EntityType& /*entity*/,
                          Spaces::ConstraintsInterface<C, R>& /*ret*/) const
   {
diff --git a/dune/gdt/spaces/rt/pdelab.hh b/dune/gdt/spaces/rt/pdelab.hh
index 26edb80bc..f63e27e59 100644
--- a/dune/gdt/spaces/rt/pdelab.hh
+++ b/dune/gdt/spaces/rt/pdelab.hh
@@ -41,7 +41,7 @@ namespace RT {
 
 
 // forward, to be used in the traits and to allow for specialization
-template <class GridViewImp, int polynomialOrder, class RangeFieldImp, int rangeDim, int rangeDimCols = 1>
+template <class GridViewImp, int polynomialOrder, class RangeFieldImp, size_t rangeDim, size_t rangeDimCols = 1>
 class PdelabBased
 {
   static_assert(AlwaysFalse<GridViewImp>::value, "Untested for these dimensions or polynomial order!");
@@ -51,7 +51,7 @@ class PdelabBased
 namespace internal {
 
 
-template <class GridViewImp, int polynomialOrder, class RangeFieldImp, int rangeDim, int rangeDimCols>
+template <class GridViewImp, int polynomialOrder, class RangeFieldImp, size_t rangeDim, size_t rangeDimCols>
 class PdelabBasedTraits
 {
 public:
@@ -64,7 +64,7 @@ public:
 
 private:
   typedef typename GridViewType::ctype DomainFieldType;
-  static const unsigned int dimDomain = GridViewType::dimension;
+  static const size_t dimDomain = GridViewType::dimension;
 
 public:
   typedef RangeFieldImp RangeFieldType;
@@ -115,7 +115,7 @@ private:
 } // namespace internal
 
 
-template <class GridViewImp, class RangeFieldImp, int rangeDim>
+template <class GridViewImp, class RangeFieldImp, size_t rangeDim>
 class PdelabBased<GridViewImp, 0, RangeFieldImp, rangeDim, 1>
     : public Spaces::RTInterface<internal::PdelabBasedTraits<GridViewImp, 0, RangeFieldImp, rangeDim, 1>,
                                  GridViewImp::dimension, RangeFieldImp, rangeDim, 1>
@@ -219,7 +219,7 @@ public:
   } // ... communicator(...)
 
 private:
-  template <class S, int d, int p, bool simplicial>
+  template <class S, size_t d, int p, bool simplicial>
   struct Helper
   {
     static_assert(AlwaysFalse<S>::value, "Not available for this combination!");
@@ -255,7 +255,7 @@ private:
 #else // HAVE_DUNE_PDELAB
 
 
-template <class GridViewImp, int polynomialOrder, class RangeFieldImp, int rangeDim, int rangeDimCols = 1>
+template <class GridViewImp, int polynomialOrder, class RangeFieldImp, size_t rangeDim, size_t rangeDimCols = 1>
 class PdelabBased
 {
   static_assert(AlwaysFalse<GridViewImp>::value, "You are missing dune-pdelab!");
diff --git a/test/elliptic-cg-discretization.hh b/test/elliptic-cg-discretization.hh
index ba9929ee3..9098e3150 100644
--- a/test/elliptic-cg-discretization.hh
+++ b/test/elliptic-cg-discretization.hh
@@ -48,10 +48,10 @@ template <class GridViewType, int polynomialOrder,
 class Discretization
 {
 public:
-  static const unsigned int dimDomain = GridViewType::dimension;
+  static const size_t dimDomain = GridViewType::dimension;
   typedef typename GridViewType::ctype DomainFieldType;
 
-  static const unsigned int dimRange = 1;
+  static const size_t dimRange = 1;
   typedef double RangeFieldType;
 
   static const unsigned int polOrder = polynomialOrder;
@@ -199,9 +199,9 @@ protected:
   typedef typename TestCase::EntityType EntityType;
 
   typedef typename TestCase::DomainFieldType DomainFieldType;
-  static const unsigned int dimDomain = TestCase::dimDomain;
+  static const size_t dimDomain = TestCase::dimDomain;
   typedef typename TestCase::RangeFieldType RangeFieldType;
-  static const unsigned int dimRange = TestCase::dimRange;
+  static const size_t dimRange = TestCase::dimRange;
 
   typedef Discretization<GridViewType, polOrder> DiscretizationType;
   typedef typename DiscretizationType::VectorType VectorType;
diff --git a/test/elliptic-sipdg-discretization.hh b/test/elliptic-sipdg-discretization.hh
index 7a19dd9f7..854210c2b 100644
--- a/test/elliptic-sipdg-discretization.hh
+++ b/test/elliptic-sipdg-discretization.hh
@@ -55,10 +55,10 @@ template <class GridPartType, int polynomialOrder,
 class Discretization
 {
 public:
-  static const unsigned int dimDomain = GridPartType::dimension;
+  static const size_t dimDomain = GridPartType::dimension;
   typedef typename GridPartType::ctype DomainFieldType;
 
-  static const unsigned int dimRange = 1;
+  static const size_t dimRange = 1;
   typedef double RangeFieldType;
 
   static const unsigned int polOrder = polynomialOrder;
@@ -215,9 +215,9 @@ class EocStudy : public Dune::Stuff::Common::ConvergenceStudy
   typedef typename TestCase::EntityType EntityType;
 
   typedef typename TestCase::DomainFieldType DomainFieldType;
-  static const unsigned int dimDomain = TestCase::dimDomain;
+  static const size_t dimDomain = TestCase::dimDomain;
   typedef typename TestCase::RangeFieldType RangeFieldType;
-  static const unsigned int dimRange = TestCase::dimRange;
+  static const size_t dimRange = TestCase::dimRange;
 
   typedef Discretization<GridPartType, polOrder> DiscretizationType;
   typedef typename DiscretizationType::VectorType VectorType;
diff --git a/test/elliptic-swipdg-discretization.hh b/test/elliptic-swipdg-discretization.hh
index e74a9bc51..db8ede055 100644
--- a/test/elliptic-swipdg-discretization.hh
+++ b/test/elliptic-swipdg-discretization.hh
@@ -12,6 +12,8 @@
 #include <cmath>
 #include <limits>
 
+#include <boost/numeric/conversion/cast.hpp>
+
 #include <dune/common/timer.hh>
 
 #include <dune/geometry/quadraturerules.hh>
@@ -70,10 +72,10 @@ template <class GridPartType, int polynomialOrder,
 class Discretization
 {
 public:
-  static const unsigned int dimDomain = GridPartType::dimension;
+  static const size_t dimDomain = GridPartType::dimension;
   typedef typename GridPartType::ctype DomainFieldType;
 
-  static const unsigned int dimRange = 1;
+  static const size_t dimRange = 1;
   typedef double RangeFieldType;
 
   static const unsigned int polOrder = polynomialOrder;
@@ -231,9 +233,9 @@ protected:
   typedef typename TestCase::GridViewType GridViewType;
 
   typedef typename TestCase::DomainFieldType DomainFieldType;
-  static const unsigned int dimDomain = TestCase::dimDomain;
+  static const size_t dimDomain = TestCase::dimDomain;
   typedef typename TestCase::RangeFieldType RangeFieldType;
-  static const unsigned int dimRange = TestCase::dimRange;
+  static const size_t dimRange = TestCase::dimRange;
 
   typedef Discretization<GridPartType, polOrder> DiscretizationType;
 
@@ -559,9 +561,9 @@ class EstimatorStudy : public EocStudy<TestCase, 1>
   typedef typename BaseType::EntityType EntityType;
 
   typedef typename BaseType::DomainFieldType DomainFieldType;
-  static const unsigned int dimDomain = BaseType::dimDomain;
+  static const size_t dimDomain = BaseType::dimDomain;
   typedef typename BaseType::RangeFieldType RangeFieldType;
-  static const unsigned int dimRange = BaseType::dimRange;
+  static const size_t dimRange = BaseType::dimRange;
 
   typedef typename BaseType::DiscretizationType DiscretizationType;
   typedef typename DiscretizationType::VectorType VectorType;
@@ -1235,7 +1237,7 @@ private:
         if (intersection.boundary() && !intersection.neighbor()) {
           const auto& intersection_geometry = intersection.geometry();
           for (size_t local_intersection_corner_id = 0;
-               int(local_intersection_corner_id) < intersection_geometry.corners();
+               local_intersection_corner_id < boost::numeric_cast< size_t >(intersection_geometry.corners());
                ++local_intersection_corner_id) {
             const auto global_intersection_corner = intersection_geometry.corner(local_intersection_corner_id);
             // now, we need to find the entity's vertex this intersection's corner point equals to, so we
diff --git a/test/elliptic-testcases.hh b/test/elliptic-testcases.hh
index 0eb6963da..1490dbcfb 100644
--- a/test/elliptic-testcases.hh
+++ b/test/elliptic-testcases.hh
@@ -53,7 +53,7 @@ public:
   typedef typename Dune::GDT::SpaceTools::LevelGridPartView<GridType>::Type GridViewType;
   typedef typename GridType::template Codim<0>::Entity EntityType;
   typedef typename GridType::ctype DomainFieldType;
-  static const unsigned int dimDomain = GridType::dimension;
+  static const size_t dimDomain = GridType::dimension;
 
   Base(std::unique_ptr<GridProviderType>&& grd_prv, size_t num_refinements)
     : grid_provider_(std::move(grd_prv))
@@ -145,9 +145,9 @@ public:
   typedef typename BaseType::GridViewType GridViewType;
   typedef typename BaseType::EntityType EntityType;
   typedef typename BaseType::DomainFieldType DomainFieldType;
-  static const unsigned int dimDomain = BaseType::dimDomain;
+  static const size_t dimDomain = BaseType::dimDomain;
   typedef double RangeFieldType;
-  static const unsigned int dimRange = 1;
+  static const size_t dimRange = 1;
   typedef DSG::BoundaryInfos::AllDirichlet<typename GridViewType::Intersection> BoundaryInfoType;
 
   typedef Dune::Stuff::Functions::Constant<EntityType, DomainFieldType, dimDomain, RangeFieldType, dimRange>
@@ -251,9 +251,9 @@ public:
   typedef typename BaseType::GridViewType GridViewType;
   typedef typename BaseType::EntityType EntityType;
   typedef typename BaseType::DomainFieldType DomainFieldType;
-  static const unsigned int dimDomain = BaseType::dimDomain;
+  static const size_t dimDomain = BaseType::dimDomain;
   typedef double RangeFieldType;
-  static const unsigned int dimRange = 1;
+  static const size_t dimRange = 1;
   typedef DSG::BoundaryInfos::AllDirichlet<typename GridViewType::Intersection> BoundaryInfoType;
 
   typedef Dune::Stuff::Functions::Constant<EntityType, DomainFieldType, dimDomain, RangeFieldType, dimRange>
@@ -368,9 +368,9 @@ public:
   typedef typename BaseType::GridViewType GridViewType;
   typedef typename BaseType::EntityType EntityType;
   typedef typename BaseType::DomainFieldType DomainFieldType;
-  static const unsigned int dimDomain = BaseType::dimDomain;
+  static const size_t dimDomain = BaseType::dimDomain;
   typedef double RangeFieldType;
-  static const unsigned int dimRange = 1;
+  static const size_t dimRange = 1;
   typedef DSG::BoundaryInfos::AllDirichlet<typename GridViewType::Intersection> BoundaryInfoType;
 
   typedef Dune::Stuff::Functions::Constant<EntityType, DomainFieldType, dimDomain, RangeFieldType, dimRange>
@@ -506,9 +506,9 @@ public:
   typedef typename BaseType::GridViewType GridViewType;
   typedef typename BaseType::EntityType EntityType;
   typedef typename BaseType::DomainFieldType DomainFieldType;
-  static const unsigned int dimDomain = BaseType::dimDomain;
+  static const size_t dimDomain = BaseType::dimDomain;
   typedef double RangeFieldType;
-  static const unsigned int dimRange = 1;
+  static const size_t dimRange = 1;
   typedef DSG::BoundaryInfos::NormalBased<typename GridViewType::Intersection> BoundaryInfoType;
 
   typedef Dune::Stuff::Functions::Constant<EntityType, DomainFieldType, dimDomain, RangeFieldType, dimRange>
@@ -618,9 +618,9 @@ public:
   typedef typename BaseType::GridViewType GridViewType;
   typedef typename BaseType::EntityType EntityType;
   typedef typename BaseType::DomainFieldType DomainFieldType;
-  static const unsigned int dimDomain = BaseType::dimDomain;
+  static const size_t dimDomain = BaseType::dimDomain;
   typedef double RangeFieldType;
-  static const unsigned int dimRange = 1;
+  static const size_t dimRange = 1;
   typedef DSG::BoundaryInfos::AllDirichlet<typename GridViewType::Intersection> BoundaryInfoType;
 
   typedef Dune::Stuff::Functions::Constant<EntityType, DomainFieldType, dimDomain, RangeFieldType, dimRange>
diff --git a/test/operators_darcy.hh b/test/operators_darcy.hh
index ad755e7a1..5ed0625f4 100644
--- a/test/operators_darcy.hh
+++ b/test/operators_darcy.hh
@@ -37,7 +37,7 @@ struct DarcyOperator : public ::testing::Test
   typedef Dune::Stuff::Grid::Providers::Cube<GridType> GridProviderType;
   typedef typename GridViewType::template Codim<0>::Entity EntityType;
   typedef typename GridViewType::ctype DomainFieldType;
-  static const unsigned int dimDomain = SourceSpaceType::dimDomain;
+  static const size_t dimDomain = SourceSpaceType::dimDomain;
   typedef double RangeFieldType;
 
   typedef typename Dune::Stuff::LA::Container<RangeFieldType>::VectorType VectorType;
diff --git a/test/operators_elliptic_swipdg.cc b/test/operators_elliptic_swipdg.cc
index 4985f517d..4ea3bbd5b 100644
--- a/test/operators_elliptic_swipdg.cc
+++ b/test/operators_elliptic_swipdg.cc
@@ -24,13 +24,13 @@ using namespace Dune::GDT;
 
 TEST(EllipticSWIPDGOperator, is_affinely_decomposable)
 {
-  static const unsigned int d = 2;
+  static const size_t d = 2;
   typedef SGrid<d, d> GridType;
   typedef GridType::template Codim<0>::Entity E;
   typedef GridType::ctype D;
   typedef double R;
-  static const unsigned int r = 1;
-  auto grid_provider          = Stuff::Grid::Providers::Cube<GridType>::create();
+  static const size_t r = 1;
+  auto grid_provider    = Stuff::Grid::Providers::Cube<GridType>::create();
   typedef Spaces::
       DiscontinuousLagrangeProvider<GridType, Stuff::Grid::ChooseLayer::leaf, ChooseSpaceBackend::fem, 1, R, r>
           SpaceProvider;
diff --git a/test/operators_oswaldinterpolation.hh b/test/operators_oswaldinterpolation.hh
index c5f9b1f5a..c31198c1c 100644
--- a/test/operators_oswaldinterpolation.hh
+++ b/test/operators_oswaldinterpolation.hh
@@ -25,7 +25,7 @@ struct Oswald_Interpolation_Operator : public ::testing::Test
   typedef typename SpaceType::GridViewType GridViewType;
   typedef typename GridViewType::Grid GridType;
   typedef Dune::Stuff::Grid::Providers::Cube<GridType> GridProviderType;
-  static const unsigned int dimDomain = SpaceType::dimDomain;
+  static const size_t dimDomain = SpaceType::dimDomain;
 
   /**
    * \note This is not a test for correct results yet!
diff --git a/test/operators_products_prolong.hh b/test/operators_products_prolong.hh
index 6dd68a9a2..ce7a4cfdb 100644
--- a/test/operators_products_prolong.hh
+++ b/test/operators_products_prolong.hh
@@ -30,10 +30,10 @@ struct ProlongationOperatorBase
   typedef Dune::Stuff::Grid::Providers::Cube<GridType> GridProviderType;
   typedef typename GridViewType::template Codim<0>::Entity EntityType;
   typedef typename FineSpaceType::DomainFieldType DomainFieldType;
-  static const unsigned int dimDomain = FineSpaceType::dimDomain;
+  static const size_t dimDomain = FineSpaceType::dimDomain;
   typedef Dune::FieldVector<DomainFieldType, dimDomain> DomainType;
   typedef typename FineSpaceType::RangeFieldType RangeFieldType;
-  static const unsigned int dimRange = FineSpaceType::dimRange;
+  static const size_t dimRange = FineSpaceType::dimRange;
   typedef Dune::Stuff::Functions::Expression<EntityType, DomainFieldType, dimDomain, RangeFieldType, dimRange>
       FunctionType;
   typedef typename Dune::Stuff::LA::Container<RangeFieldType>::VectorType VectorType;
diff --git a/test/operators_projections.hh b/test/operators_projections.hh
index d5b5fb7d0..11f9ad25d 100644
--- a/test/operators_projections.hh
+++ b/test/operators_projections.hh
@@ -30,10 +30,10 @@ struct ProjectionOperatorBase : ::testing::Test
   typedef Dune::Stuff::Grid::Providers::Cube<GridType> GridProviderType;
   typedef typename GridViewType::template Codim<0>::Entity EntityType;
   typedef typename SpaceType::DomainFieldType DomainFieldType;
-  static const unsigned int dimDomain = SpaceType::dimDomain;
+  static const size_t dimDomain = SpaceType::dimDomain;
   typedef typename SpaceType::RangeFieldType RangeFieldType;
-  static const unsigned int dimRange = SpaceType::dimRange;
   static const unsigned int polOrder = SpaceType::polOrder;
+  static const size_t dimRange       = SpaceType::dimRange;
   typedef Dune::Stuff::Functions::Expression<EntityType, DomainFieldType, dimDomain, RangeFieldType, dimRange>
       FunctionType;
   typedef typename Stuff::LA::Container<RangeFieldType, Stuff::LA::default_backend>::VectorType VectorType;
diff --git a/test/products.hh b/test/products.hh
index ea884ea70..b63b95edd 100644
--- a/test/products.hh
+++ b/test/products.hh
@@ -22,9 +22,9 @@ struct ProductBase
   typedef Dune::Stuff::Grid::Providers::Cube<GridType> GridProviderType;
   typedef typename GridViewType::template Codim<0>::Entity EntityType;
   typedef typename SpaceType::DomainFieldType DomainFieldType;
-  static const unsigned int dimDomain = SpaceType::dimDomain;
+  static const size_t dimDomain = SpaceType::dimDomain;
   typedef typename SpaceType::RangeFieldType RangeFieldType;
-  static const unsigned int dimRange = SpaceType::dimRange;
+  static const size_t dimRange = SpaceType::dimRange;
   typedef Dune::Stuff::Functions::Expression<EntityType, DomainFieldType, dimDomain, RangeFieldType, dimRange>
       FunctionType;
   typedef typename Dune::GDT::ProductInterface<typename ProductType::Traits> InterfaceType;
@@ -66,9 +66,9 @@ struct LocalizableProductBase
   typedef Dune::Stuff::Grid::Providers::Cube<GridType> GridProviderType;
   typedef typename GridViewType::template Codim<0>::Entity EntityType;
   typedef typename SpaceType::DomainFieldType DomainFieldType;
-  static const unsigned int dimDomain = SpaceType::dimDomain;
+  static const size_t dimDomain = SpaceType::dimDomain;
   typedef typename SpaceType::RangeFieldType RangeFieldType;
-  static const unsigned int dimRange = SpaceType::dimRange;
+  static const size_t dimRange = SpaceType::dimRange;
   typedef typename Dune::GDT::LocalizableProductInterface<typename ProductType::Traits> InterfaceType;
 
   static void fulfills_interface(ProductType& product)
@@ -119,9 +119,9 @@ struct AssemblableProductBase
   typedef Dune::Stuff::Grid::Providers::Cube<GridType> GridProviderType;
   typedef typename GridViewType::template Codim<0>::Entity EntityType;
   typedef typename SpaceType::DomainFieldType DomainFieldType;
-  static const unsigned int dimDomain = SpaceType::dimDomain;
+  static const size_t dimDomain = SpaceType::dimDomain;
   typedef typename SpaceType::RangeFieldType RangeFieldType;
-  static const unsigned int dimRange = SpaceType::dimRange;
+  static const size_t dimRange = SpaceType::dimRange;
   typedef typename Dune::GDT::AssemblableProductInterface<typename ProductType::Traits> InterfaceType;
 
   static void fulfills_interface(ProductType& product)
diff --git a/test/products_boundaryl2.hh b/test/products_boundaryl2.hh
index 17e5df8f4..e5a0e147c 100644
--- a/test/products_boundaryl2.hh
+++ b/test/products_boundaryl2.hh
@@ -28,13 +28,13 @@ struct BoundaryL2ProductBase : public ::testing::Test
   typedef Dune::Stuff::Grid::Providers::Cube<GridType> GridProviderType;
   typedef typename GridViewType::template Codim<0>::Entity EntityType;
   typedef typename SpaceType::DomainFieldType DomainFieldType;
-  static const unsigned int dimDomain = SpaceType::dimDomain;
+  static const size_t dimDomain = SpaceType::dimDomain;
   typedef typename SpaceType::RangeFieldType RangeFieldType;
-  static const unsigned int dimRange = SpaceType::dimRange;
+  static const size_t dimRange = SpaceType::dimRange;
   typedef Stuff::Functions::Expression<EntityType, DomainFieldType, dimDomain, RangeFieldType, dimRange> FunctionType;
 
   BoundaryL2ProductBase()
-    : grid_(GridProviderType(0.0, 1.0, boost::numeric_cast<unsigned int>(dsc_grid_elements())).grid_ptr())
+    : grid_(GridProviderType(0.0, 1.0, boost::numeric_cast<size_t>(dsc_grid_elements())).grid_ptr())
     , space_(Dune::GDT::SpaceTools::GridPartView<SpaceType>::create_leaf(*grid_))
     , one_("x", "1.0", 0)
   {
diff --git a/test/products_elliptic.hh b/test/products_elliptic.hh
index 93e1595b5..4a1303788 100644
--- a/test/products_elliptic.hh
+++ b/test/products_elliptic.hh
@@ -30,15 +30,15 @@ struct EllipticProductBase : public ::testing::Test
   typedef Dune::Stuff::Grid::Providers::Cube<GridType> GridProviderType;
   typedef typename GridViewType::template Codim<0>::Entity EntityType;
   typedef typename SpaceType::DomainFieldType DomainFieldType;
-  static const unsigned int dimDomain = SpaceType::dimDomain;
+  static const size_t dimDomain = SpaceType::dimDomain;
   typedef typename SpaceType::RangeFieldType RangeFieldType;
-  static const unsigned int dimRange = SpaceType::dimRange;
+  static const size_t dimRange = SpaceType::dimRange;
   typedef Stuff::Functions::Expression<EntityType, DomainFieldType, dimDomain, RangeFieldType, dimRange> FunctionType;
   typedef Stuff::Functions::Constant<EntityType, DomainFieldType, dimDomain, RangeFieldType, dimDomain, dimDomain>
       TensorType;
 
   EllipticProductBase()
-    : grid_(GridProviderType(0.0, 1.0, boost::numeric_cast<unsigned int>(dsc_grid_elements())).grid_ptr())
+    : grid_(GridProviderType(0.0, 1.0, boost::numeric_cast<size_t>(dsc_grid_elements())).grid_ptr())
     , leaf_view_(Dune::GDT::SpaceTools::GridPartView<SpaceType>::create_leaf(*grid_))
     , space_(leaf_view_)
     , one_("x", "1.0", 1, "constant gradient", {{"1.0", "1.0", "1.0"}})
diff --git a/test/products_swipdgpenalty.hh b/test/products_swipdgpenalty.hh
index 6a2663b33..16c809743 100644
--- a/test/products_swipdgpenalty.hh
+++ b/test/products_swipdgpenalty.hh
@@ -31,9 +31,9 @@ struct SwipdgPenaltyProductBase : public ::testing::Test
   typedef Dune::Stuff::Grid::Providers::Cube<GridType> GridProviderType;
   typedef typename GridViewType::template Codim<0>::Entity EntityType;
   typedef typename SpaceType::DomainFieldType DomainFieldType;
-  static const unsigned int dimDomain = SpaceType::dimDomain;
+  static const size_t dimDomain = SpaceType::dimDomain;
   typedef typename SpaceType::RangeFieldType RangeFieldType;
-  static const unsigned int dimRange = SpaceType::dimRange;
+  static const size_t dimRange = SpaceType::dimRange;
   typedef Stuff::Functions::Expression<EntityType, DomainFieldType, dimDomain, RangeFieldType, dimRange> ScalarType;
   typedef Stuff::Functions::Constant<EntityType, DomainFieldType, dimDomain, RangeFieldType, dimDomain, dimDomain>
       TensorType;
diff --git a/test/products_weightedl2.hh b/test/products_weightedl2.hh
index 836c2f029..676e70d75 100644
--- a/test/products_weightedl2.hh
+++ b/test/products_weightedl2.hh
@@ -28,13 +28,13 @@ struct WeightedL2ProductBase : public ::testing::Test
   typedef Dune::Stuff::Grid::Providers::Cube<GridType> GridProviderType;
   typedef typename GridViewType::template Codim<0>::Entity EntityType;
   typedef typename SpaceType::DomainFieldType DomainFieldType;
-  static const unsigned int dimDomain = SpaceType::dimDomain;
+  static const size_t dimDomain = SpaceType::dimDomain;
   typedef typename SpaceType::RangeFieldType RangeFieldType;
-  static const unsigned int dimRange = SpaceType::dimRange;
+  static const size_t dimRange = SpaceType::dimRange;
   typedef Stuff::Functions::Expression<EntityType, DomainFieldType, dimDomain, RangeFieldType, dimRange> FunctionType;
 
   WeightedL2ProductBase()
-    : grid_(GridProviderType(0.0, 1.0, boost::numeric_cast<unsigned int>(dsc_grid_elements())).grid_ptr())
+    : grid_(GridProviderType(0.0, 1.0, boost::numeric_cast<size_t>(dsc_grid_elements())).grid_ptr())
     , space_(Dune::GDT::SpaceTools::GridPartView<SpaceType>::create_leaf(*grid_))
     , one_("x", "1.0", 0)
   {
diff --git a/test/spaces.hh b/test/spaces.hh
index c66667360..0959d989c 100644
--- a/test/spaces.hh
+++ b/test/spaces.hh
@@ -9,6 +9,8 @@
 
 #include <type_traits>
 
+#include <boost/numeric/conversion/cast.hpp>
+
 #include <dune/stuff/grid/provider/cube.hh>
 #include <dune/stuff/test/gtest/gtest.h>
 
@@ -84,11 +86,11 @@ public:
     typedef typename SpaceType::Traits Traits;
     typedef typename SpaceType::GridViewType D_GridViewType;
     typedef typename SpaceType::DomainFieldType D_DomainFieldType;
-    static const unsigned int d_dimDomain = SpaceType::dimDomain;
+    static const size_t d_dimDomain = SpaceType::dimDomain;
     typedef typename SpaceType::RangeFieldType D_RangeFieldType;
-    static const unsigned int d_dimRange     = SpaceType::dimRange;
-    static const unsigned int d_dimRangeCols = SpaceType::dimRangeCols;
-    static const int d_polOrder              = SpaceType::polOrder;
+    static const int d_polOrder        = SpaceType::polOrder;
+    static const size_t d_dimRange     = SpaceType::dimRange;
+    static const size_t d_dimRangeCols = SpaceType::dimRangeCols;
     typedef typename SpaceType::BackendType D_BackendType;
     typedef typename SpaceType::MapperType D_MapperType;
     typedef typename SpaceType::BaseFunctionSetType D_BaseFunctionSetType;
@@ -103,11 +105,11 @@ public:
     typedef typename InterfaceType::derived_type derived_type;
     typedef typename InterfaceType::GridViewType I_GridViewType;
     typedef typename InterfaceType::DomainFieldType I_DomainFieldType;
-    static const unsigned int i_dimDomain = InterfaceType::dimDomain;
+    static const size_t i_dimDomain = InterfaceType::dimDomain;
     typedef typename InterfaceType::RangeFieldType I_RangeFieldType;
-    static const unsigned int i_dimRange     = InterfaceType::dimRange;
-    static const unsigned int i_dimRangeCols = InterfaceType::dimRangeCols;
-    static const int i_polOrder              = InterfaceType::polOrder;
+    static const int i_polOrder        = InterfaceType::polOrder;
+    static const size_t i_dimRange     = InterfaceType::dimRange;
+    static const size_t i_dimRangeCols = InterfaceType::dimRangeCols;
     typedef typename InterfaceType::BackendType I_BackendType;
     typedef typename InterfaceType::MapperType I_MapperType;
     typedef typename InterfaceType::BaseFunctionSetType I_BaseFunctionSetType;
@@ -315,11 +317,11 @@ public:
     typedef typename BaseFunctionSetType::BackendType D_BackendType;
     typedef typename BaseFunctionSetType::EntityType D_EntityType;
     typedef typename BaseFunctionSetType::DomainFieldType D_DomainFieldType;
-    static const unsigned int d_dimDomain = BaseFunctionSetType::dimDomain;
+    static const size_t d_dimDomain = BaseFunctionSetType::dimDomain;
     typedef typename BaseFunctionSetType::DomainType D_DomainType;
     typedef typename BaseFunctionSetType::RangeFieldType D_RangeFieldType;
-    static const unsigned int d_dimRange     = BaseFunctionSetType::dimRange;
-    static const unsigned int d_dimRangeCols = BaseFunctionSetType::dimRangeCols;
+    static const size_t d_dimRange     = BaseFunctionSetType::dimRange;
+    static const size_t d_dimRangeCols = BaseFunctionSetType::dimRangeCols;
     typedef typename BaseFunctionSetType::RangeType D_RangeType;
     typedef typename BaseFunctionSetType::JacobianRangeType D_JacobianRangeType;
     static_assert(std::is_same<D_EntityType, typename SpaceType::EntityType>::value, "Types do not match!");
@@ -340,11 +342,11 @@ public:
     typedef typename InterfaceType::BackendType I_BackendType;
     typedef typename InterfaceType::EntityType I_EntityType;
     typedef typename InterfaceType::DomainFieldType I_DomainFieldType;
-    static const unsigned int i_dimDomain = InterfaceType::dimDomain;
+    static const size_t i_dimDomain = InterfaceType::dimDomain;
     typedef typename InterfaceType::DomainType I_DomainType;
     typedef typename InterfaceType::RangeFieldType I_RangeFieldType;
-    static const unsigned int i_dimRange     = InterfaceType::dimRange;
-    static const unsigned int i_dimRangeCols = InterfaceType::dimRangeCols;
+    static const size_t i_dimRange     = InterfaceType::dimRange;
+    static const size_t i_dimRangeCols = InterfaceType::dimRangeCols;
     typedef typename InterfaceType::RangeType I_RangeType;
     typedef typename InterfaceType::JacobianRangeType I_JacobianRangeType;
     static_assert(std::is_same<derived_type, BaseFunctionSetType>::value, "Types do not match!");
@@ -368,10 +370,11 @@ public:
       const D_BackendType& d_backend          = d_base_function_set.backend();
       size_t d_order                          = d_base_function_set.order();
 #if DUNE_GDT_TEST_SPACES_RT_CHECK
-      EXPECT_GE(d_order, int(SpaceType::polOrder)); // <- normaly we would expect equality here, but the raviart
+      EXPECT_GE(d_order, boost::numeric_cast<size_t>(SpaceType::polOrder)); // <- normaly we would expect equality here,
+// but the raviart
 //    thomas space of order 0 reports order 1 here
 #else
-      EXPECT_EQ(d_order, int(SpaceType::polOrder));
+      EXPECT_EQ(d_order, boost::numeric_cast<size_t>(SpaceType::polOrder));
 #endif
       //   the size has already been checked in fulfills_interface() above
       // * as the interface
diff --git a/test/spaces_cg.hh b/test/spaces_cg.hh
index 708fe0de0..fa6768302 100644
--- a/test/spaces_cg.hh
+++ b/test/spaces_cg.hh
@@ -6,12 +6,13 @@
 #ifndef DUNE_GDT_TEST_SPACES_CG
 #define DUNE_GDT_TEST_SPACES_CG
 
-#include "spaces.hh"
+#include <boost/numeric/conversion/cast.hpp>
 
 #include <dune/common/typetraits.hh>
 #include <dune/common/fvector.hh>
 
 #include <dune/stuff/common/print.hh>
+#include <dune/stuff/common/ranges.hh>
 #include <dune/stuff/grid/walker.hh>
 
 #include <dune/gdt/spaces/cg/fem.hh>
@@ -19,6 +20,8 @@
 #include <dune/gdt/mapper/interface.hh>
 #include <dune/gdt/basefunctionset/interface.hh>
 
+#include "spaces.hh"
+
 
 template <class SpaceType>
 class CG_Space : public SpaceBase<SpaceType>
@@ -32,7 +35,7 @@ struct P1Q1_CG_Space : public SpaceBase<SpaceType>
   typedef typename SpaceType::GridViewType GridViewType;
   typedef typename GridViewType::Grid GridType;
   typedef Dune::Stuff::Grid::Providers::Cube<GridType> GridProviderType;
-  static const unsigned int dimDomain = GridType::dimension;
+  static const size_t dimDomain = GridType::dimension;
   typedef typename GridType::ctype DomainFieldType;
   typedef Dune::FieldVector<DomainFieldType, dimDomain> DomainType;
 
@@ -44,7 +47,7 @@ struct P1Q1_CG_Space : public SpaceBase<SpaceType>
     return ret;
   }
 
-  template <class T, int d, class R, int r, int rC>
+  template <class T, size_t d, class R, size_t r, size_t rC>
   void matches_signature(const Dune::GDT::Spaces::CGInterface<T, d, R, r, rC>& /*space*/)
   {
     static_assert(std::is_same<typename SpaceType::Traits, T>::value, "");
@@ -82,7 +85,7 @@ struct P1Q1_CG_Space : public SpaceBase<SpaceType>
     const auto entity_end_it = this->space_.grid_view().template end<0>();
     for (auto entity_it = this->space_.grid_view().template begin<0>(); entity_it != entity_end_it; ++entity_it) {
       const auto& entity = *entity_it;
-      for (int cc = 0; cc < entity.template count<dimDomain>(); ++cc) {
+      for (auto cc : DSC::valueRange(entity.template count<dimDomain>())) {
         const auto vertex_ptr   = entity.template subEntity<dimDomain>(cc);
         const DomainType vertex = vertex_ptr->geometry().center();
         vertex_to_indices_map[convert_vector(vertex)] = std::set<size_t>();
@@ -90,16 +93,16 @@ struct P1Q1_CG_Space : public SpaceBase<SpaceType>
     }
 
     // walk the grid again to find all DoF ids
-    auto functor             = [&](const typename GridProviderType::EntityType& entity) {
-      const int num_vertices = entity.template count<dimDomain>();
+    auto functor                = [&](const typename GridProviderType::EntityType& entity) {
+      const size_t num_vertices = boost::numeric_cast<size_t>(entity.template count<dimDomain>());
       const auto basis = this->space_.base_function_set(entity);
-      EXPECT_EQ(basis.size(), size_t(num_vertices));
-      for (int cc = 0; cc < num_vertices; ++cc) {
-        const auto vertex_ptr   = entity.template subEntity<dimDomain>(cc);
+      EXPECT_EQ(basis.size(), num_vertices);
+      for (size_t cc = 0; cc < num_vertices; ++cc) {
+        const auto vertex_ptr   = entity.template subEntity<dimDomain>(boost::numeric_cast<int>(cc));
         const DomainType vertex = vertex_ptr->geometry().center();
         // find the local basis function which corresponds to this vertex
         const auto basis_values = basis.evaluate(entity.geometry().local(vertex));
-        EXPECT_EQ(basis_values.size(), size_t(num_vertices));
+        EXPECT_EQ(basis_values.size(), num_vertices);
         size_t ones            = 0;
         size_t zeros           = 0;
         size_t failures        = 0;
diff --git a/test/spaces_dg.hh b/test/spaces_dg.hh
index e42e3009b..2e9617542 100644
--- a/test/spaces_dg.hh
+++ b/test/spaces_dg.hh
@@ -6,7 +6,10 @@
 #ifndef DUNE_GDT_SPACES_DG_COMMON_HH
 #define DUNE_GDT_SPACES_DG_COMMON_HH
 
+#include <boost/numeric/conversion/cast.hpp>
+
 #include <dune/stuff/common/print.hh>
+#include <dune/stuff/common/ranges.hh>
 
 #include "spaces.hh"
 
@@ -23,7 +26,7 @@ struct P1Q1_DG_Space : public SpaceBase<SpaceType>
   typedef typename SpaceType::GridViewType GridViewType;
   typedef typename GridViewType::Grid GridType;
   typedef Dune::Stuff::Grid::Providers::Cube<GridType> GridProviderType;
-  static const unsigned int dimDomain = GridType::dimension;
+  static const size_t dimDomain = GridType::dimension;
   typedef typename GridType::ctype DomainFieldType;
   typedef Dune::FieldVector<DomainFieldType, dimDomain> DomainType;
 
@@ -43,7 +46,7 @@ struct P1Q1_DG_Space : public SpaceBase<SpaceType>
     const auto entity_end_it = this->space_.grid_view().template end<0>();
     for (auto entity_it = this->space_.grid_view().template begin<0>(); entity_it != entity_end_it; ++entity_it) {
       const auto& entity = *entity_it;
-      for (int cc = 0; cc < entity.template count<dimDomain>(); ++cc) {
+      for (auto cc : DSC::valueRange(entity.template count<dimDomain>())) {
         const auto vertex_ptr   = entity.template subEntity<dimDomain>(cc);
         const DomainType vertex = vertex_ptr->geometry().center();
         vertex_to_indices_map[convert_vector(vertex)].first = std::set<size_t>();
@@ -52,16 +55,16 @@ struct P1Q1_DG_Space : public SpaceBase<SpaceType>
     }
     // walk the grid again to find all DoF ids
     for (auto entity_it = this->space_.grid_view().template begin<0>(); entity_it != entity_end_it; ++entity_it) {
-      const auto& entity     = *entity_it;
-      const int num_vertices = entity.template count<dimDomain>();
+      const auto& entity        = *entity_it;
+      const size_t num_vertices = boost::numeric_cast<size_t>(entity.template count<dimDomain>());
       const auto basis = this->space_.base_function_set(entity);
-      EXPECT_EQ(basis.size(), size_t(num_vertices));
-      for (int cc = 0; cc < num_vertices; ++cc) {
-        const auto vertex_ptr   = entity.template subEntity<dimDomain>(cc);
+      EXPECT_EQ(basis.size(), num_vertices);
+      for (size_t cc = 0; cc < num_vertices; ++cc) {
+        const auto vertex_ptr   = entity.template subEntity<dimDomain>(boost::numeric_cast<int>(cc));
         const DomainType vertex = vertex_ptr->geometry().center();
         // find the local basis function which corresponds to this vertex
         const auto basis_values = basis.evaluate(entity.geometry().local(vertex));
-        EXPECT_EQ(basis_values.size(), size_t(num_vertices));
+        EXPECT_EQ(basis_values.size(), num_vertices);
         size_t ones            = 0;
         size_t zeros           = 0;
         size_t failures        = 0;
diff --git a/test/spaces_rt.hh b/test/spaces_rt.hh
index 4e18e824b..da48b99e7 100644
--- a/test/spaces_rt.hh
+++ b/test/spaces_rt.hh
@@ -18,7 +18,7 @@
 template <class SpaceType>
 class RT_Space : public SpaceBase<SpaceType>
 {
-  template <class T, int d, class R, int r, int rC>
+  template <class T, size_t d, class R, size_t r, size_t rC>
   void matches_signature(const Dune::GDT::Spaces::RTInterface<T, d, R, r, rC>& /*space*/)
   {
     static_assert(Dune::GDT::is_rt_space<SpaceType>::value, "");
-- 
GitLab