diff --git a/dumux/multidomain/newtonsolver.hh b/dumux/multidomain/newtonsolver.hh
index 24672b2045e6964a381f9f16f3a0f1a31d23f18d..7eda01acb04d12c8afebcaedb7cab61535599647 100644
--- a/dumux/multidomain/newtonsolver.hh
+++ b/dumux/multidomain/newtonsolver.hh
@@ -34,9 +34,6 @@ namespace Detail {
 template<class Assembler, class Index>
 using DetectPVSwitchMultiDomain = typename Assembler::template GridVariables<Index::value>::VolumeVariables::PrimaryVariableSwitch;
 
-template<class Assembler, std::size_t i>
-using GetPVSwitchMultiDomain = Dune::Std::detected_or<int, DetectPVSwitchMultiDomain, Assembler, Dune::index_constant<i>>;
-
 } // end namespace Detail
 
 /*!
@@ -56,10 +53,12 @@ class MultiDomainNewtonSolver: public NewtonSolver<Assembler, LinearSolver, Reas
     static constexpr bool assemblerExportsVariables = Detail::exportsVariables<Assembler>;
 
     template<std::size_t i>
-    using PrimaryVariableSwitch = typename Detail::GetPVSwitchMultiDomain<Assembler, i>::type;
+    using PrimaryVariableSwitch =
+      Dune::Std::detected_or_t<int, Detail::DetectPVSwitchMultiDomain, Assembler, Dune::index_constant<i>>;
 
     template<std::size_t i>
-    using HasPriVarsSwitch = typename Detail::GetPVSwitchMultiDomain<Assembler, i>::value_t; // std::true_type or std::false_type
+    using HasPriVarsSwitch =
+      Dune::Std::is_detected<Detail::DetectPVSwitchMultiDomain, Assembler, Dune::index_constant<i>>; // std::true_type or std::false_type
 
     template<std::size_t i>
     using PrivarSwitchPtr = std::unique_ptr<PrimaryVariableSwitch<i>>;
diff --git a/dumux/nonlinear/primaryvariableswitchadapter.hh b/dumux/nonlinear/primaryvariableswitchadapter.hh
index 9d3a95459c73ca631a4c83fd88c474e78b87dd72..2d3c2ea604d6322b2af0874d21f0d213cfa736dd 100644
--- a/dumux/nonlinear/primaryvariableswitchadapter.hh
+++ b/dumux/nonlinear/primaryvariableswitchadapter.hh
@@ -36,10 +36,7 @@ template<class Variables>
 using DetectPVSwitch = typename Variables::VolumeVariables::PrimaryVariableSwitch;
 
 template<class Variables>
-using GetPVSwitch = Dune::Std::detected_or<int, DetectPVSwitch, Variables>;
-
-template<class Variables>
-using PrimaryVariableSwitch = typename GetPVSwitch<Variables>::type;
+using PrimaryVariableSwitch = Dune::Std::detected_or_t<int, DetectPVSwitch, Variables>;
 
 } // end namespace Detail
 
@@ -48,7 +45,7 @@ using PrimaryVariableSwitch = typename GetPVSwitch<Variables>::type;
  * \brief Helper boolean to check if the given variables involve primary variable switching.
  */
 template<class Variables>
-inline constexpr bool hasPriVarsSwitch = typename Detail::GetPVSwitch<Variables>::value_t();
+inline constexpr bool hasPriVarsSwitch = Dune::Std::is_detected<Detail::DetectPVSwitch, Variables>();
 
 /*!
  * \ingroup Nonlinear