diff --git a/dumux/experimental/assembly/cclocalassembler.hh b/dumux/experimental/assembly/cclocalassembler.hh
index 80a1b79bf04a1558d1957a6c76e16cabe31337c1..ea58dfcf7dbaa24bbccfd59195c9c39e6023e837 100644
--- a/dumux/experimental/assembly/cclocalassembler.hh
+++ b/dumux/experimental/assembly/cclocalassembler.hh
@@ -29,6 +29,7 @@
 #include <dumux/discretization/fluxstencil.hh>
 #include <dumux/discretization/cellcentered/elementsolution.hh>
 
+#include <dumux/experimental/common/typetraits/typetraits.hh>
 #include <dumux/experimental/assembly/fvlocalassemblerbase.hh>
 
 namespace Dumux::Experimental {
@@ -36,12 +37,6 @@ namespace Dumux::Experimental {
 #ifndef DOXYGEN
 namespace Detail::CC {
 
-struct NoOperator
-{
-    template<class... Args>
-    constexpr void operator()(Args&&...) const {}
-};
-
 template<class X, class Y>
 using Impl = std::conditional_t<!std::is_same_v<X, void>, X, Y>;
 
@@ -75,12 +70,12 @@ public:
 
     using ParentType::ParentType;
 
-    template <class ResidualVector, class StageParams, class PartialReassembler = DefaultPartialReassembler, class CouplingFunction = Detail::CC::NoOperator>
+    template <class ResidualVector, class StageParams, class PartialReassembler = DefaultPartialReassembler, class CouplingFunction = Noop>
     void assembleJacobianAndResidual(JacobianMatrix& jac, ResidualVector& res, GridVariables& gridVariables,
                                      const StageParams& stageParams, ResidualVector& temporal, ResidualVector& spatial,
                                      ResidualVector& constrainedDofs,
                                      const PartialReassembler* partialReassembler = nullptr,
-                                     const CouplingFunction& maybeAssembleCouplingBlocks = {})
+                                     const CouplingFunction& maybeAssembleCouplingBlocks = noop)
     {
         this->asImp_().bindLocalViews();
         const auto globalI = this->fvGeometry().gridGeometry().elementMapper().index(this->element());
diff --git a/dumux/experimental/assembly/cvfelocalassembler.hh b/dumux/experimental/assembly/cvfelocalassembler.hh
index 7c58d0115af9d3e30d4d852e841802dc1925820e..bec9d86816b9f43bfb3d2b2a012ec31a9078cc19 100644
--- a/dumux/experimental/assembly/cvfelocalassembler.hh
+++ b/dumux/experimental/assembly/cvfelocalassembler.hh
@@ -26,6 +26,7 @@
 
 #include <dumux/assembly/numericepsilon.hh>
 #include <dumux/assembly/diffmethod.hh>
+#include <dumux/experimental/common/typetraits/typetraits.hh>
 #include <dumux/experimental/assembly/fvlocalassemblerbase.hh>
 #include <dumux/assembly/partialreassembler.hh>
 #include <dumux/assembly/entitycolor.hh>
@@ -39,12 +40,6 @@ namespace Dumux::Experimental {
 #ifndef DOXYGEN
 namespace Detail::CVFE {
 
-struct NoOperator
-{
-    template<class... Args>
-    constexpr void operator()(Args&&...) const {}
-};
-
 template<class X, class Y>
 using Impl = std::conditional_t<!std::is_same_v<X, void>, X, Y>;
 
@@ -90,12 +85,12 @@ public:
      * \brief Computes the derivatives with respect to the given element and adds them
      *        to the global matrix. The element residual is written into the right hand side.
      */
-    template <class ResidualVector, class StageParams, class PartialReassembler = DefaultPartialReassembler, class CouplingFunction = Detail::CVFE::NoOperator>
+    template <class ResidualVector, class StageParams, class PartialReassembler = DefaultPartialReassembler, class CouplingFunction = Noop>
     void assembleJacobianAndResidual(JacobianMatrix& jac, ResidualVector& res, GridVariables& gridVariables,
                                      const StageParams& stageParams, ResidualVector& temporal, ResidualVector& spatial,
                                      ResidualVector& constrainedDofs,
                                      const PartialReassembler* partialReassembler = nullptr,
-                                     const CouplingFunction& maybeAssembleCouplingBlocks = {})
+                                     const CouplingFunction& maybeAssembleCouplingBlocks = noop)
     {
         this->asImp_().bindLocalViews();
         const auto eIdxGlobal = this->asImp_().problem().gridGeometry().elementMapper().index(this->element());