From 881604e249dcf6759fc8bfcb748093851c5a5fc5 Mon Sep 17 00:00:00 2001
From: Stephane Del Pino <stephane.delpino44@gmail.com>
Date: Fri, 9 Dec 2022 01:00:03 +0100
Subject: [PATCH] Follow a bunch of suggestions by clazy

---
 src/language/ast/ASTNodeDataTypeFlattener.cpp |  2 +-
 src/language/modules/ModuleRepository.cpp     |  6 +--
 .../node_processor/ASTNodeListProcessor.hpp   |  2 +
 src/language/utils/ASTNodeDataType.hpp        |  2 +-
 .../utils/BuiltinFunctionEmbedderUtils.cpp    |  6 +--
 src/mesh/Connectivity.cpp                     |  4 +-
 src/output/GnuplotWriter.cpp                  |  6 +--
 src/output/GnuplotWriter1D.cpp                |  4 +-
 src/output/VTKWriter.cpp                      |  2 +-
 src/scheme/DiscreteFunctionUtils.hpp          |  4 +-
 tests/FixturesForBuiltinT.hpp                 |  2 +-
 tests/test_BuiltinFunctionRegister.hpp        | 23 +++++------
 tests/test_CellIntegrator.cpp                 |  6 +--
 tests/test_Connectivity.cpp                   | 18 ++++-----
 tests/test_DiscreteFunctionIntegrator.cpp     |  6 +--
 tests/test_DiscreteFunctionInterpoler.cpp     |  6 +--
 tests/test_DiscreteFunctionP0.cpp             | 38 +++++++++----------
 tests/test_DiscreteFunctionP0Vector.cpp       | 36 +++++++++---------
 tests/test_DiscreteFunctionUtils.cpp          |  8 ++--
 .../test_DiscreteFunctionVectorIntegrator.cpp |  8 ++--
 .../test_DiscreteFunctionVectorInterpoler.cpp |  8 ++--
 ...DiscreteFunctionVectorInterpolerByZone.cpp |  2 +-
 tests/test_EdgeIntegrator.cpp                 |  6 +--
 ...EmbeddedIDiscreteFunctionMathFunctions.cpp |  6 +--
 ...est_EmbeddedIDiscreteFunctionOperators.cpp | 12 +++---
 tests/test_EmbeddedIDiscreteFunctionUtils.cpp | 10 ++---
 tests/test_FaceIntegrator.cpp                 |  6 +--
 tests/test_IntegrateCellArray.cpp             | 12 +++---
 tests/test_IntegrateCellValue.cpp             | 12 +++---
 tests/test_IntegrateCellValue.hpp             |  1 -
 tests/test_IntegrateOnCells.cpp               | 36 +++++++++---------
 tests/test_InterpolateItemArray.cpp           | 12 +++---
 tests/test_InterpolateItemValue.cpp           | 14 +++----
 tests/test_ItemArray.cpp                      | 20 +++++-----
 tests/test_ItemArrayUtils.cpp                 | 24 ++++++------
 tests/test_ItemValue.cpp                      | 20 +++++-----
 tests/test_ItemValueUtils.cpp                 | 20 +++++-----
 ...est_ItemValueVariantFunctionInterpoler.cpp |  6 +--
 tests/test_MeshEdgeBoundary.cpp               | 12 +++---
 tests/test_MeshFaceBoundary.cpp               | 12 +++---
 tests/test_MeshFlatEdgeBoundary.cpp           | 26 ++++++-------
 tests/test_MeshFlatFaceBoundary.cpp           | 26 ++++++-------
 tests/test_MeshFlatNodeBoundary.cpp           | 26 ++++++-------
 tests/test_MeshLineEdgeBoundary.cpp           | 20 +++++-----
 tests/test_MeshLineFaceBoundary.cpp           | 10 ++---
 tests/test_MeshLineNodeBoundary.cpp           | 20 +++++-----
 tests/test_MeshNodeBoundary.cpp               | 12 +++---
 tests/test_SubItemArrayPerItem.cpp            | 20 +++++-----
 tests/test_SubItemArrayPerItemUtils.cpp       | 20 +++++-----
 tests/test_SubItemValuePerItem.cpp            | 24 ++++++------
 tests/test_SubItemValuePerItemUtils.cpp       | 20 +++++-----
 51 files changed, 333 insertions(+), 331 deletions(-)
 delete mode 100644 tests/test_IntegrateCellValue.hpp

diff --git a/src/language/ast/ASTNodeDataTypeFlattener.cpp b/src/language/ast/ASTNodeDataTypeFlattener.cpp
index 9cc1fa483..00b77e0bf 100644
--- a/src/language/ast/ASTNodeDataTypeFlattener.cpp
+++ b/src/language/ast/ASTNodeDataTypeFlattener.cpp
@@ -52,7 +52,7 @@ ASTNodeDataTypeFlattener::ASTNodeDataTypeFlattener(ASTNode& node, FlattenedDataT
       case ASTNodeDataType::builtin_function_t: {
         const auto& compound_data_type = getBuiltinFunctionEmbedder(node)->getReturnDataType();
 
-        for (auto data_type : compound_data_type.contentTypeList()) {
+        for (const auto& data_type : compound_data_type.contentTypeList()) {
           flattened_datatype_list.push_back({*data_type, node});
         }
 
diff --git a/src/language/modules/ModuleRepository.cpp b/src/language/modules/ModuleRepository.cpp
index 250dc0aad..5bdad8bce 100644
--- a/src/language/modules/ModuleRepository.cpp
+++ b/src/language/modules/ModuleRepository.cpp
@@ -96,7 +96,7 @@ ModuleRepository::_populateSymbolTable(const ASTNode& module_node,
                                        const IModule::NameValueMap& name_value_descriptor_map,
                                        SymbolTable& symbol_table)
 {
-  for (auto [symbol_name, value_descriptor] : name_value_descriptor_map) {
+  for (const auto& [symbol_name, value_descriptor] : name_value_descriptor_map) {
     auto [i_symbol, success] = symbol_table.add(symbol_name, module_node.begin());
 
     if (not success) {
@@ -139,7 +139,7 @@ ModuleRepository::populateSymbolTable(const ASTNode& module_name_node, SymbolTab
 
     this->_populateSymbolTable(module_name_node, module_name, populating_module.getNameValueMap(), symbol_table);
 
-    for (auto [symbol_name, embedded] : populating_module.getNameTypeMap()) {
+    for (const auto& [symbol_name, embedded] : populating_module.getNameTypeMap()) {
       BasicAffectationRegisterFor<EmbeddedData>(ASTNodeDataType::build<ASTNodeDataType::type_id_t>(symbol_name));
     }
 
@@ -163,7 +163,7 @@ ModuleRepository::populateMandatorySymbolTable(const ASTNode& root_node, SymbolT
 
       this->_populateSymbolTable(root_node, module_name, i_module->getNameValueMap(), symbol_table);
 
-      for (auto [symbol_name, embedded] : i_module->getNameTypeMap()) {
+      for (const auto& [symbol_name, embedded] : i_module->getNameTypeMap()) {
         BasicAffectationRegisterFor<EmbeddedData>(ASTNodeDataType::build<ASTNodeDataType::type_id_t>(symbol_name));
       }
 
diff --git a/src/language/node_processor/ASTNodeListProcessor.hpp b/src/language/node_processor/ASTNodeListProcessor.hpp
index df29d82de..5a9d8c0b8 100644
--- a/src/language/node_processor/ASTNodeListProcessor.hpp
+++ b/src/language/node_processor/ASTNodeListProcessor.hpp
@@ -1,8 +1,10 @@
 #ifndef AST_NODE_LIST_PROCESSOR_HPP
 #define AST_NODE_LIST_PROCESSOR_HPP
 
+#include <language/PEGGrammar.hpp>
 #include <language/ast/ASTNode.hpp>
 #include <language/node_processor/INodeProcessor.hpp>
+#include <language/utils/SymbolTable.hpp>
 
 class ASTNodeListProcessor final : public INodeProcessor
 {
diff --git a/src/language/utils/ASTNodeDataType.hpp b/src/language/utils/ASTNodeDataType.hpp
index 4ef3a80c1..f148e99f1 100644
--- a/src/language/utils/ASTNodeDataType.hpp
+++ b/src/language/utils/ASTNodeDataType.hpp
@@ -176,7 +176,7 @@ class ASTNodeDataType
   {
     static_assert((data_type == list_t), "incorrect data_type construction: cannot provide a list of data types");
 
-    for (auto i : list_of_types) {
+    for (const auto& i : list_of_types) {
       Assert(i->m_data_type != ASTNodeDataType::undefined_t, "cannot build a type list containing undefined types");
     }
 
diff --git a/src/language/utils/BuiltinFunctionEmbedderUtils.cpp b/src/language/utils/BuiltinFunctionEmbedderUtils.cpp
index be3474ef7..f4259526f 100644
--- a/src/language/utils/BuiltinFunctionEmbedderUtils.cpp
+++ b/src/language/utils/BuiltinFunctionEmbedderUtils.cpp
@@ -135,7 +135,7 @@ getBuiltinFunctionEmbedder(ASTNode& n)
               switch (tuple_content_type) {
               case ASTNodeDataType::vector_t: {
                 if (arg_type == ASTNodeDataType::list_t) {
-                  for (auto element_type : arg_type.contentTypeList()) {
+                  for (const auto& element_type : arg_type.contentTypeList()) {
                     is_castable &= is_castable_to_vector(*element_type, tuple_content_type);
                   }
                 } else {
@@ -145,7 +145,7 @@ getBuiltinFunctionEmbedder(ASTNode& n)
               }
               case ASTNodeDataType::matrix_t: {
                 if (arg_type == ASTNodeDataType::list_t) {
-                  for (auto element_type : arg_type.contentTypeList()) {
+                  for (const auto& element_type : arg_type.contentTypeList()) {
                     is_castable &= is_castable_to_matrix(*element_type, tuple_content_type);
                   }
                 } else {
@@ -155,7 +155,7 @@ getBuiltinFunctionEmbedder(ASTNode& n)
               }
               default:
                 if (arg_type == ASTNodeDataType::list_t) {
-                  for (auto element_type : arg_type.contentTypeList()) {
+                  for (const auto& element_type : arg_type.contentTypeList()) {
                     is_castable &= isNaturalConversion(*element_type, tuple_content_type);
                   }
                 } else {
diff --git a/src/mesh/Connectivity.cpp b/src/mesh/Connectivity.cpp
index 5622294b2..22e722a11 100644
--- a/src/mesh/Connectivity.cpp
+++ b/src/mesh/Connectivity.cpp
@@ -99,7 +99,7 @@ Connectivity<Dimension>::_buildFrom(const ConnectivityDescriptor& descriptor)
     // edge and face references are set equal to node references
     m_ref_edge_list_vector.reserve(descriptor.template refItemListVector<ItemType::node>().size());
     m_ref_face_list_vector.reserve(descriptor.template refItemListVector<ItemType::node>().size());
-    for (auto ref_node_list : descriptor.template refItemListVector<ItemType::node>()) {
+    for (const auto& ref_node_list : descriptor.template refItemListVector<ItemType::node>()) {
       const RefId ref_id            = ref_node_list.refId();
       Array<const NodeId> node_list = ref_node_list.list();
       Array<EdgeId> edge_list(node_list.size());
@@ -154,7 +154,7 @@ Connectivity<Dimension>::_buildFrom(const ConnectivityDescriptor& descriptor)
 
       // edge references are set equal to face references
       m_ref_edge_list_vector.reserve(descriptor.template refItemListVector<ItemType::face>().size());
-      for (auto ref_face_list : descriptor.template refItemListVector<ItemType::face>()) {
+      for (const auto& ref_face_list : descriptor.template refItemListVector<ItemType::face>()) {
         const RefId ref_id            = ref_face_list.refId();
         Array<const FaceId> face_list = ref_face_list.list();
         Array<EdgeId> edge_list(face_list.size());
diff --git a/src/output/GnuplotWriter.cpp b/src/output/GnuplotWriter.cpp
index 4a346cf33..50969799e 100644
--- a/src/output/GnuplotWriter.cpp
+++ b/src/output/GnuplotWriter.cpp
@@ -162,7 +162,7 @@ GnuplotWriter::_writeDataAtNodes(const MeshType& mesh,
           const NodeId& node_id                     = cell_nodes[i_node];
           const TinyVector<MeshType::Dimension>& xr = mesh.xr()[node_id];
           fout << xr[0];
-          for (auto [name, item_data_variant] : output_named_item_data_set) {
+          for (const auto& [name, item_data_variant] : output_named_item_data_set) {
             std::visit([&](auto&& item_data) { _writeData(item_data, cell_id, node_id, fout); }, item_data_variant);
           }
           fout << '\n';
@@ -182,7 +182,7 @@ GnuplotWriter::_writeDataAtNodes(const MeshType& mesh,
           const NodeId& node_id                     = cell_nodes[i_node];
           const TinyVector<MeshType::Dimension>& xr = mesh.xr()[node_id];
           fout << xr[0] << ' ' << xr[1];
-          for (auto [name, item_data_variant] : output_named_item_data_set) {
+          for (const auto& [name, item_data_variant] : output_named_item_data_set) {
             std::visit([&](auto&& item_data) { _writeData(item_data, cell_id, node_id, fout); }, item_data_variant);
           }
           fout << '\n';
@@ -190,7 +190,7 @@ GnuplotWriter::_writeDataAtNodes(const MeshType& mesh,
         const NodeId& node_id                     = cell_nodes[0];
         const TinyVector<MeshType::Dimension>& xr = mesh.xr()[node_id];
         fout << xr[0] << ' ' << xr[1];
-        for (auto [name, item_data_variant] : output_named_item_data_set) {
+        for (const auto& [name, item_data_variant] : output_named_item_data_set) {
           std::visit([&](auto&& item_data) { _writeData(item_data, cell_id, node_id, fout); }, item_data_variant);
         }
         fout << "\n\n\n";
diff --git a/src/output/GnuplotWriter1D.cpp b/src/output/GnuplotWriter1D.cpp
index ad398126c..a31569048 100644
--- a/src/output/GnuplotWriter1D.cpp
+++ b/src/output/GnuplotWriter1D.cpp
@@ -149,7 +149,7 @@ GnuplotWriter1D::_writeItemDatas(const MeshType& mesh,
 
   const size_t& number_of_columns = [&] {
     size_t number_of_columns = 1;
-    for (auto [name, item_data] : output_named_item_data_set) {
+    for (const auto& [name, item_data] : output_named_item_data_set) {
       std::visit([&](auto&& value) { number_of_columns += _itemDataNbRow(value); }, item_data);
     }
     return number_of_columns;
@@ -198,7 +198,7 @@ GnuplotWriter1D::_writeItemDatas(const MeshType& mesh,
   }
 
   size_t column_number = 1;
-  for (auto [name, output_item_data] : output_named_item_data_set) {
+  for (const auto& [name, output_item_data] : output_named_item_data_set) {
     std::visit(
       [&](auto&& item_data) {
         using ItemDataT = std::decay_t<decltype(item_data)>;
diff --git a/src/output/VTKWriter.cpp b/src/output/VTKWriter.cpp
index f68607d7d..0a40c7265 100644
--- a/src/output/VTKWriter.cpp
+++ b/src/output/VTKWriter.cpp
@@ -116,7 +116,7 @@ class VTKWriter::SerializedDataList
   void
   write(std::ostream& os) const
   {
-    for (auto serialized_data : m_serialized_data_list) {
+    for (const auto& serialized_data : m_serialized_data_list) {
       serialized_data->write(os);
     }
   }
diff --git a/src/scheme/DiscreteFunctionUtils.hpp b/src/scheme/DiscreteFunctionUtils.hpp
index 1eea93a7e..e01437f2b 100644
--- a/src/scheme/DiscreteFunctionUtils.hpp
+++ b/src/scheme/DiscreteFunctionUtils.hpp
@@ -12,7 +12,7 @@ bool
 checkDiscretizationType(const std::vector<std::shared_ptr<const IDiscreteFunction>>& discrete_function_list,
                         const DiscreteFunctionType& discrete_function_type)
 {
-  for (auto discrete_function : discrete_function_list) {
+  for (const auto& discrete_function : discrete_function_list) {
     if (discrete_function->descriptor().type() != discrete_function_type) {
       return false;
     }
@@ -25,7 +25,7 @@ std::shared_ptr<const IMesh>
 getCommonMesh(const std::vector<std::shared_ptr<const IDiscreteFunction>>& discrete_function_list)
 {
   std::shared_ptr<const IMesh> i_mesh;
-  for (auto discrete_function : discrete_function_list) {
+  for (const auto& discrete_function : discrete_function_list) {
     if (not i_mesh.use_count()) {
       i_mesh = discrete_function->mesh();
     } else {
diff --git a/tests/FixturesForBuiltinT.hpp b/tests/FixturesForBuiltinT.hpp
index d2ff0fcb3..52348a23d 100644
--- a/tests/FixturesForBuiltinT.hpp
+++ b/tests/FixturesForBuiltinT.hpp
@@ -9,7 +9,7 @@
 template <>
 inline ASTNodeDataType ast_node_data_type_from<std::shared_ptr<const double>> =
   ASTNodeDataType::build<ASTNodeDataType::type_id_t>("builtin_t");
-const auto builtin_data_type = ast_node_data_type_from<std::shared_ptr<const double>>;
+inline const auto builtin_data_type = ast_node_data_type_from<std::shared_ptr<const double>>;
 
 inline std::shared_ptr<const double>
 operator-(const std::shared_ptr<const double>& p_a)
diff --git a/tests/test_BuiltinFunctionRegister.hpp b/tests/test_BuiltinFunctionRegister.hpp
index 03a847bc2..dfc7da319 100644
--- a/tests/test_BuiltinFunctionRegister.hpp
+++ b/tests/test_BuiltinFunctionRegister.hpp
@@ -4,6 +4,7 @@
 #include <language/utils/ASTNodeDataTypeTraits.hpp>
 #include <language/utils/BuiltinFunctionEmbedder.hpp>
 #include <language/utils/ParseError.hpp>
+#include <language/utils/SymbolTable.hpp>
 #include <language/utils/TypeDescriptor.hpp>
 #include <utils/Exceptions.hpp>
 
@@ -12,7 +13,7 @@
 template <>
 inline ASTNodeDataType ast_node_data_type_from<std::shared_ptr<const double>> =
   ASTNodeDataType::build<ASTNodeDataType::type_id_t>("builtin_t");
-const auto builtin_data_type = ast_node_data_type_from<std::shared_ptr<const double>>;
+inline const auto builtin_data_type = ast_node_data_type_from<std::shared_ptr<const double>>;
 
 namespace test_only
 {
@@ -116,25 +117,25 @@ class test_BuiltinFunctionRegister
 
     m_name_builtin_function_map.insert(
       std::make_pair("tuple_BtoR:(B)", std::make_shared<BuiltinFunctionEmbedder<double(std::vector<bool>)>>(
-                                            [](const std::vector<bool>&) -> double { return 0.5; })));
+                                         [](const std::vector<bool>&) -> double { return 0.5; })));
 
     m_name_builtin_function_map.insert(
       std::make_pair("tuple_NtoR:(N)", std::make_shared<BuiltinFunctionEmbedder<double(std::vector<uint64_t>)>>(
-                                            [](const std::vector<uint64_t>&) -> double { return 0.5; })));
+                                         [](const std::vector<uint64_t>&) -> double { return 0.5; })));
 
     m_name_builtin_function_map.insert(
       std::make_pair("tuple_ZtoR:(Z)", std::make_shared<BuiltinFunctionEmbedder<double(std::vector<int64_t>)>>(
-                                            [](const std::vector<int64_t>& v) -> double {
-                                              int64_t sum = 0;
-                                              for (auto vi : v) {
-                                                sum += vi;
-                                              }
-                                              return 0.5 * sum;
-                                            })));
+                                         [](const std::vector<int64_t>& v) -> double {
+                                           int64_t sum = 0;
+                                           for (auto vi : v) {
+                                             sum += vi;
+                                           }
+                                           return 0.5 * sum;
+                                         })));
 
     m_name_builtin_function_map.insert(
       std::make_pair("tuple_RtoB:(R)", std::make_shared<BuiltinFunctionEmbedder<bool(std::vector<double>)>>(
-                                            [](const std::vector<double>&) -> bool { return false; })));
+                                         [](const std::vector<double>&) -> bool { return false; })));
 
     m_name_builtin_function_map.insert(
       std::make_pair("tuple_stringtoB:(string)",
diff --git a/tests/test_CellIntegrator.cpp b/tests/test_CellIntegrator.cpp
index ebd322d14..7c70d19fd 100644
--- a/tests/test_CellIntegrator.cpp
+++ b/tests/test_CellIntegrator.cpp
@@ -497,7 +497,7 @@ TEST_CASE("CellIntegrator", "[scheme]")
       mesh_list.push_back(std::make_pair("hybrid mesh", hybrid_mesh));
       mesh_list.push_back(std::make_pair("diamond mesh", DualMeshManager::instance().getDiamondDualMesh(*hybrid_mesh)));
 
-      for (auto mesh_info : mesh_list) {
+      for (const auto& mesh_info : mesh_list) {
         auto mesh_name = mesh_info.first;
         auto mesh      = mesh_info.second;
 
@@ -1418,7 +1418,7 @@ TEST_CASE("CellIntegrator", "[scheme]")
       mesh_list.push_back(std::make_pair("hybrid mesh", hybrid_mesh));
       mesh_list.push_back(std::make_pair("diamond mesh", DualMeshManager::instance().getDiamondDualMesh(*hybrid_mesh)));
 
-      for (auto mesh_info : mesh_list) {
+      for (const auto& mesh_info : mesh_list) {
         auto mesh_name = mesh_info.first;
         auto mesh      = mesh_info.second;
 
@@ -2345,7 +2345,7 @@ TEST_CASE("CellIntegrator", "[scheme]")
       mesh_list.push_back(std::make_pair("hybrid mesh", hybrid_mesh));
       mesh_list.push_back(std::make_pair("diamond mesh", DualMeshManager::instance().getDiamondDualMesh(*hybrid_mesh)));
 
-      for (auto mesh_info : mesh_list) {
+      for (const auto& mesh_info : mesh_list) {
         auto mesh_name = mesh_info.first;
         auto mesh      = mesh_info.second;
 
diff --git a/tests/test_Connectivity.cpp b/tests/test_Connectivity.cpp
index f7d2ab7de..60e894a83 100644
--- a/tests/test_Connectivity.cpp
+++ b/tests/test_Connectivity.cpp
@@ -132,7 +132,7 @@ TEST_CASE("Connectivity", "[mesh]")
     {
       std::array mesh_list = MeshDataBaseForTests::get().all1DMeshes();
 
-      for (auto named_mesh : mesh_list) {
+      for (const auto& named_mesh : mesh_list) {
         SECTION(named_mesh.name())
         {
           auto mesh_1d                        = named_mesh.mesh();
@@ -223,7 +223,7 @@ TEST_CASE("Connectivity", "[mesh]")
     {
       std::array mesh_list = MeshDataBaseForTests::get().all2DMeshes();
 
-      for (auto named_mesh : mesh_list) {
+      for (const auto& named_mesh : mesh_list) {
         SECTION(named_mesh.name())
         {
           auto mesh_2d                        = named_mesh.mesh();
@@ -326,7 +326,7 @@ TEST_CASE("Connectivity", "[mesh]")
     {
       std::array mesh_list = MeshDataBaseForTests::get().all3DMeshes();
 
-      for (auto named_mesh : mesh_list) {
+      for (const auto& named_mesh : mesh_list) {
         SECTION(named_mesh.name())
         {
           auto mesh_3d = named_mesh.mesh();
@@ -443,7 +443,7 @@ TEST_CASE("Connectivity", "[mesh]")
     {
       std::array mesh_list = MeshDataBaseForTests::get().all1DMeshes();
 
-      for (auto named_mesh : mesh_list) {
+      for (const auto& named_mesh : mesh_list) {
         SECTION(named_mesh.name())
         {
           auto mesh_1d                        = named_mesh.mesh();
@@ -492,7 +492,7 @@ TEST_CASE("Connectivity", "[mesh]")
     {
       std::array mesh_list = MeshDataBaseForTests::get().all2DMeshes();
 
-      for (auto named_mesh : mesh_list) {
+      for (const auto& named_mesh : mesh_list) {
         SECTION(named_mesh.name())
         {
           auto mesh_2d                        = named_mesh.mesh();
@@ -570,7 +570,7 @@ TEST_CASE("Connectivity", "[mesh]")
     {
       std::array mesh_list = MeshDataBaseForTests::get().all3DMeshes();
 
-      for (auto named_mesh : mesh_list) {
+      for (const auto& named_mesh : mesh_list) {
         SECTION(named_mesh.name())
         {
           auto mesh_3d = named_mesh.mesh();
@@ -703,7 +703,7 @@ TEST_CASE("Connectivity", "[mesh]")
     {
       std::array mesh_list = MeshDataBaseForTests::get().all1DMeshes();
 
-      for (auto named_mesh : mesh_list) {
+      for (const auto& named_mesh : mesh_list) {
         SECTION(named_mesh.name())
         {
           auto mesh                           = named_mesh.mesh();
@@ -775,7 +775,7 @@ TEST_CASE("Connectivity", "[mesh]")
     {
       std::array mesh_list = MeshDataBaseForTests::get().all2DMeshes();
 
-      for (auto named_mesh : mesh_list) {
+      for (const auto& named_mesh : mesh_list) {
         SECTION(named_mesh.name())
         {
           auto mesh                           = named_mesh.mesh();
@@ -877,7 +877,7 @@ TEST_CASE("Connectivity", "[mesh]")
     {
       std::array mesh_list = MeshDataBaseForTests::get().all3DMeshes();
 
-      for (auto named_mesh : mesh_list) {
+      for (const auto& named_mesh : mesh_list) {
         SECTION(named_mesh.name())
         {
           auto mesh                           = named_mesh.mesh();
diff --git a/tests/test_DiscreteFunctionIntegrator.cpp b/tests/test_DiscreteFunctionIntegrator.cpp
index 031f6c62b..250d80102 100644
--- a/tests/test_DiscreteFunctionIntegrator.cpp
+++ b/tests/test_DiscreteFunctionIntegrator.cpp
@@ -49,7 +49,7 @@ TEST_CASE("DiscreteFunctionIntegrator", "[scheme]")
 
     std::array mesh_list = MeshDataBaseForTests::get().all1DMeshes();
 
-    for (auto named_mesh : mesh_list) {
+    for (const auto& named_mesh : mesh_list) {
       SECTION(named_mesh.name())
       {
         auto mesh_1d = named_mesh.mesh();
@@ -295,7 +295,7 @@ let R3x3_non_linear_1d: R^1 -> R^3x3, x -> [[2 * exp(x[0]) * sin(x[0]) + 3, sin(
 
     std::array mesh_list = MeshDataBaseForTests::get().all2DMeshes();
 
-    for (auto named_mesh : mesh_list) {
+    for (const auto& named_mesh : mesh_list) {
       SECTION(named_mesh.name())
       {
         auto mesh_2d = named_mesh.mesh();
@@ -541,7 +541,7 @@ let R3x3_non_linear_2d: R^2 -> R^3x3, x -> [[2 * exp(x[0]) * sin(x[1]) + 3, sin(
 
     std::array mesh_list = MeshDataBaseForTests::get().all3DMeshes();
 
-    for (auto named_mesh : mesh_list) {
+    for (const auto& named_mesh : mesh_list) {
       SECTION(named_mesh.name())
       {
         auto mesh_3d = named_mesh.mesh();
diff --git a/tests/test_DiscreteFunctionInterpoler.cpp b/tests/test_DiscreteFunctionInterpoler.cpp
index f9d870d29..431e5a559 100644
--- a/tests/test_DiscreteFunctionInterpoler.cpp
+++ b/tests/test_DiscreteFunctionInterpoler.cpp
@@ -45,7 +45,7 @@ TEST_CASE("DiscreteFunctionInterpoler", "[scheme]")
 
     std::array mesh_list = MeshDataBaseForTests::get().all1DMeshes();
 
-    for (auto named_mesh : mesh_list) {
+    for (const auto& named_mesh : mesh_list) {
       SECTION(named_mesh.name())
       {
         auto mesh_1d = named_mesh.mesh();
@@ -344,7 +344,7 @@ let R3x3_non_linear_1d: R^1 -> R^3x3, x -> [[2 * exp(x[0]) * sin(x[0]) + 3, sin(
 
     std::array mesh_list = MeshDataBaseForTests::get().all2DMeshes();
 
-    for (auto named_mesh : mesh_list) {
+    for (const auto& named_mesh : mesh_list) {
       SECTION(named_mesh.name())
       {
         auto mesh_2d = named_mesh.mesh();
@@ -644,7 +644,7 @@ let R3x3_non_linear_2d: R^2 -> R^3x3, x -> [[2 * exp(x[0]) * sin(x[1]) + 3, sin(
 
     std::array mesh_list = MeshDataBaseForTests::get().all3DMeshes();
 
-    for (auto named_mesh : mesh_list) {
+    for (const auto& named_mesh : mesh_list) {
       SECTION(named_mesh.name())
       {
         auto mesh_3d = named_mesh.mesh();
diff --git a/tests/test_DiscreteFunctionP0.cpp b/tests/test_DiscreteFunctionP0.cpp
index 7073def1e..9d83de536 100644
--- a/tests/test_DiscreteFunctionP0.cpp
+++ b/tests/test_DiscreteFunctionP0.cpp
@@ -26,7 +26,7 @@ TEST_CASE("DiscreteFunctionP0", "[scheme]")
 
       std::array mesh_list = MeshDataBaseForTests::get().all1DMeshes();
 
-      for (auto named_mesh : mesh_list) {
+      for (const auto& named_mesh : mesh_list) {
         SECTION(named_mesh.name())
         {
           auto mesh = named_mesh.mesh();
@@ -74,7 +74,7 @@ TEST_CASE("DiscreteFunctionP0", "[scheme]")
 
       std::array mesh_list = MeshDataBaseForTests::get().all2DMeshes();
 
-      for (auto named_mesh : mesh_list) {
+      for (const auto& named_mesh : mesh_list) {
         SECTION(named_mesh.name())
         {
           auto mesh = named_mesh.mesh();
@@ -122,7 +122,7 @@ TEST_CASE("DiscreteFunctionP0", "[scheme]")
 
       std::array mesh_list = MeshDataBaseForTests::get().all3DMeshes();
 
-      for (auto named_mesh : mesh_list) {
+      for (const auto& named_mesh : mesh_list) {
         SECTION(named_mesh.name())
         {
           auto mesh = named_mesh.mesh();
@@ -184,7 +184,7 @@ TEST_CASE("DiscreteFunctionP0", "[scheme]")
 
       std::array mesh_list = MeshDataBaseForTests::get().all1DMeshes();
 
-      for (auto named_mesh : mesh_list) {
+      for (const auto& named_mesh : mesh_list) {
         SECTION(named_mesh.name())
         {
           auto mesh = named_mesh.mesh();
@@ -213,7 +213,7 @@ TEST_CASE("DiscreteFunctionP0", "[scheme]")
 
       std::array mesh_list = MeshDataBaseForTests::get().all2DMeshes();
 
-      for (auto named_mesh : mesh_list) {
+      for (const auto& named_mesh : mesh_list) {
         SECTION(named_mesh.name())
         {
           auto mesh = named_mesh.mesh();
@@ -242,7 +242,7 @@ TEST_CASE("DiscreteFunctionP0", "[scheme]")
 
       std::array mesh_list = MeshDataBaseForTests::get().all3DMeshes();
 
-      for (auto named_mesh : mesh_list) {
+      for (const auto& named_mesh : mesh_list) {
         SECTION(named_mesh.name())
         {
           auto mesh = named_mesh.mesh();
@@ -284,7 +284,7 @@ TEST_CASE("DiscreteFunctionP0", "[scheme]")
 
       std::array mesh_list = MeshDataBaseForTests::get().all1DMeshes();
 
-      for (auto named_mesh : mesh_list) {
+      for (const auto& named_mesh : mesh_list) {
         SECTION(named_mesh.name())
         {
           auto mesh = named_mesh.mesh();
@@ -386,7 +386,7 @@ TEST_CASE("DiscreteFunctionP0", "[scheme]")
 
       std::array mesh_list = MeshDataBaseForTests::get().all2DMeshes();
 
-      for (auto named_mesh : mesh_list) {
+      for (const auto& named_mesh : mesh_list) {
         SECTION(named_mesh.name())
         {
           auto mesh = named_mesh.mesh();
@@ -488,7 +488,7 @@ TEST_CASE("DiscreteFunctionP0", "[scheme]")
 
       std::array mesh_list = MeshDataBaseForTests::get().all3DMeshes();
 
-      for (auto named_mesh : mesh_list) {
+      for (const auto& named_mesh : mesh_list) {
         SECTION(named_mesh.name())
         {
           auto mesh = named_mesh.mesh();
@@ -592,7 +592,7 @@ TEST_CASE("DiscreteFunctionP0", "[scheme]")
       constexpr size_t Dimension = 1;
       std::array mesh_list       = MeshDataBaseForTests::get().all1DMeshes();
 
-      for (auto named_mesh : mesh_list) {
+      for (const auto& named_mesh : mesh_list) {
         SECTION(named_mesh.name())
         {
           auto mesh = named_mesh.mesh();
@@ -677,7 +677,7 @@ TEST_CASE("DiscreteFunctionP0", "[scheme]")
 
       std::array mesh_list = MeshDataBaseForTests::get().all1DMeshes();
 
-      for (auto named_mesh : mesh_list) {
+      for (const auto& named_mesh : mesh_list) {
         SECTION(named_mesh.name())
         {
           auto mesh = named_mesh.mesh();
@@ -1258,7 +1258,7 @@ TEST_CASE("DiscreteFunctionP0", "[scheme]")
 
       std::array mesh_list = MeshDataBaseForTests::get().all2DMeshes();
 
-      for (auto named_mesh : mesh_list) {
+      for (const auto& named_mesh : mesh_list) {
         SECTION(named_mesh.name())
         {
           auto mesh = named_mesh.mesh();
@@ -1844,7 +1844,7 @@ TEST_CASE("DiscreteFunctionP0", "[scheme]")
 
       std::array mesh_list = MeshDataBaseForTests::get().all3DMeshes();
 
-      for (auto named_mesh : mesh_list) {
+      for (const auto& named_mesh : mesh_list) {
         SECTION(named_mesh.name())
         {
           auto mesh = named_mesh.mesh();
@@ -2493,7 +2493,7 @@ TEST_CASE("DiscreteFunctionP0", "[scheme]")
       constexpr size_t Dimension = 1;
       std::array mesh_list       = MeshDataBaseForTests::get().all1DMeshes();
 
-      for (auto named_mesh : mesh_list) {
+      for (const auto& named_mesh : mesh_list) {
         SECTION(named_mesh.name())
         {
           auto mesh = named_mesh.mesh();
@@ -2837,7 +2837,7 @@ TEST_CASE("DiscreteFunctionP0", "[scheme]")
 
       std::array mesh_list = MeshDataBaseForTests::get().all2DMeshes();
 
-      for (auto named_mesh : mesh_list) {
+      for (const auto& named_mesh : mesh_list) {
         SECTION(named_mesh.name())
         {
           auto mesh = named_mesh.mesh();
@@ -3181,7 +3181,7 @@ TEST_CASE("DiscreteFunctionP0", "[scheme]")
 
       std::array mesh_list = MeshDataBaseForTests::get().all3DMeshes();
 
-      for (auto named_mesh : mesh_list) {
+      for (const auto& named_mesh : mesh_list) {
         SECTION(named_mesh.name())
         {
           auto mesh = named_mesh.mesh();
@@ -3531,7 +3531,7 @@ TEST_CASE("DiscreteFunctionP0", "[scheme]")
 
         std::array mesh_list = MeshDataBaseForTests::get().all1DMeshes();
 
-        for (auto named_mesh : mesh_list) {
+        for (const auto& named_mesh : mesh_list) {
           SECTION(named_mesh.name())
           {
             auto mesh_1 = named_mesh.mesh();
@@ -3558,7 +3558,7 @@ TEST_CASE("DiscreteFunctionP0", "[scheme]")
 
         std::array mesh_list = MeshDataBaseForTests::get().all2DMeshes();
 
-        for (auto named_mesh : mesh_list) {
+        for (const auto& named_mesh : mesh_list) {
           SECTION(named_mesh.name())
           {
             auto mesh_1 = named_mesh.mesh();
@@ -3585,7 +3585,7 @@ TEST_CASE("DiscreteFunctionP0", "[scheme]")
 
         std::array mesh_list = MeshDataBaseForTests::get().all3DMeshes();
 
-        for (auto named_mesh : mesh_list) {
+        for (const auto& named_mesh : mesh_list) {
           SECTION(named_mesh.name())
           {
             auto mesh_1 = named_mesh.mesh();
diff --git a/tests/test_DiscreteFunctionP0Vector.cpp b/tests/test_DiscreteFunctionP0Vector.cpp
index 119a7a58a..d2da3d84e 100644
--- a/tests/test_DiscreteFunctionP0Vector.cpp
+++ b/tests/test_DiscreteFunctionP0Vector.cpp
@@ -31,7 +31,7 @@ TEST_CASE("DiscreteFunctionP0Vector", "[scheme]")
 
       std::array mesh_list = MeshDataBaseForTests::get().all1DMeshes();
 
-      for (auto named_mesh : mesh_list) {
+      for (const auto& named_mesh : mesh_list) {
         SECTION(named_mesh.name())
         {
           auto mesh = named_mesh.mesh();
@@ -79,7 +79,7 @@ TEST_CASE("DiscreteFunctionP0Vector", "[scheme]")
 
       std::array mesh_list = MeshDataBaseForTests::get().all2DMeshes();
 
-      for (auto named_mesh : mesh_list) {
+      for (const auto& named_mesh : mesh_list) {
         SECTION(named_mesh.name())
         {
           auto mesh = named_mesh.mesh();
@@ -127,7 +127,7 @@ TEST_CASE("DiscreteFunctionP0Vector", "[scheme]")
 
       std::array mesh_list = MeshDataBaseForTests::get().all3DMeshes();
 
-      for (auto named_mesh : mesh_list) {
+      for (const auto& named_mesh : mesh_list) {
         SECTION(named_mesh.name())
         {
           auto mesh = named_mesh.mesh();
@@ -189,7 +189,7 @@ TEST_CASE("DiscreteFunctionP0Vector", "[scheme]")
 
       std::array mesh_list = MeshDataBaseForTests::get().all1DMeshes();
 
-      for (auto named_mesh : mesh_list) {
+      for (const auto& named_mesh : mesh_list) {
         SECTION(named_mesh.name())
         {
           auto mesh                  = named_mesh.mesh();
@@ -211,7 +211,7 @@ TEST_CASE("DiscreteFunctionP0Vector", "[scheme]")
 
       std::array mesh_list = MeshDataBaseForTests::get().all2DMeshes();
 
-      for (auto named_mesh : mesh_list) {
+      for (const auto& named_mesh : mesh_list) {
         SECTION(named_mesh.name())
         {
           auto mesh = named_mesh.mesh();
@@ -231,7 +231,7 @@ TEST_CASE("DiscreteFunctionP0Vector", "[scheme]")
 
       std::array mesh_list = MeshDataBaseForTests::get().all3DMeshes();
 
-      for (auto named_mesh : mesh_list) {
+      for (const auto& named_mesh : mesh_list) {
         SECTION(named_mesh.name())
         {
           auto mesh = named_mesh.mesh();
@@ -266,7 +266,7 @@ TEST_CASE("DiscreteFunctionP0Vector", "[scheme]")
 
       std::array mesh_list = MeshDataBaseForTests::get().all1DMeshes();
 
-      for (auto named_mesh : mesh_list) {
+      for (const auto& named_mesh : mesh_list) {
         SECTION(named_mesh.name())
         {
           auto mesh = named_mesh.mesh();
@@ -312,7 +312,7 @@ TEST_CASE("DiscreteFunctionP0Vector", "[scheme]")
       constexpr size_t Dimension = 2;
       std::array mesh_list       = MeshDataBaseForTests::get().all2DMeshes();
 
-      for (auto named_mesh : mesh_list) {
+      for (const auto& named_mesh : mesh_list) {
         SECTION(named_mesh.name())
         {
           auto mesh = named_mesh.mesh();
@@ -359,7 +359,7 @@ TEST_CASE("DiscreteFunctionP0Vector", "[scheme]")
 
       std::array mesh_list = MeshDataBaseForTests::get().all3DMeshes();
 
-      for (auto named_mesh : mesh_list) {
+      for (const auto& named_mesh : mesh_list) {
         SECTION(named_mesh.name())
         {
           auto mesh = named_mesh.mesh();
@@ -410,7 +410,7 @@ TEST_CASE("DiscreteFunctionP0Vector", "[scheme]")
 
       std::array mesh_list = MeshDataBaseForTests::get().all1DMeshes();
 
-      for (auto named_mesh : mesh_list) {
+      for (const auto& named_mesh : mesh_list) {
         SECTION(named_mesh.name())
         {
           auto mesh = named_mesh.mesh();
@@ -453,7 +453,7 @@ TEST_CASE("DiscreteFunctionP0Vector", "[scheme]")
 
       std::array mesh_list = MeshDataBaseForTests::get().all2DMeshes();
 
-      for (auto named_mesh : mesh_list) {
+      for (const auto& named_mesh : mesh_list) {
         SECTION(named_mesh.name())
         {
           auto mesh = named_mesh.mesh();
@@ -497,7 +497,7 @@ TEST_CASE("DiscreteFunctionP0Vector", "[scheme]")
 
       std::array mesh_list = MeshDataBaseForTests::get().all3DMeshes();
 
-      for (auto named_mesh : mesh_list) {
+      for (const auto& named_mesh : mesh_list) {
         SECTION(named_mesh.name())
         {
           auto mesh = named_mesh.mesh();
@@ -545,7 +545,7 @@ TEST_CASE("DiscreteFunctionP0Vector", "[scheme]")
 
       std::array mesh_list = MeshDataBaseForTests::get().all1DMeshes();
 
-      for (auto named_mesh : mesh_list) {
+      for (const auto& named_mesh : mesh_list) {
         SECTION(named_mesh.name())
         {
           auto mesh = named_mesh.mesh();
@@ -628,7 +628,7 @@ TEST_CASE("DiscreteFunctionP0Vector", "[scheme]")
 
       std::array mesh_list = MeshDataBaseForTests::get().all2DMeshes();
 
-      for (auto named_mesh : mesh_list) {
+      for (const auto& named_mesh : mesh_list) {
         SECTION(named_mesh.name())
         {
           auto mesh = named_mesh.mesh();
@@ -711,7 +711,7 @@ TEST_CASE("DiscreteFunctionP0Vector", "[scheme]")
 
       std::array mesh_list = MeshDataBaseForTests::get().all3DMeshes();
 
-      for (auto named_mesh : mesh_list) {
+      for (const auto& named_mesh : mesh_list) {
         SECTION(named_mesh.name())
         {
           auto mesh = named_mesh.mesh();
@@ -797,7 +797,7 @@ TEST_CASE("DiscreteFunctionP0Vector", "[scheme]")
 
       std::array mesh_list = MeshDataBaseForTests::get().all1DMeshes();
 
-      for (auto named_mesh : mesh_list) {
+      for (const auto& named_mesh : mesh_list) {
         SECTION(named_mesh.name())
         {
           auto mesh = named_mesh.mesh();
@@ -931,7 +931,7 @@ TEST_CASE("DiscreteFunctionP0Vector", "[scheme]")
 
       std::array mesh_list = MeshDataBaseForTests::get().all2DMeshes();
 
-      for (auto named_mesh : mesh_list) {
+      for (const auto& named_mesh : mesh_list) {
         SECTION(named_mesh.name())
         {
           auto mesh = named_mesh.mesh();
@@ -1069,7 +1069,7 @@ TEST_CASE("DiscreteFunctionP0Vector", "[scheme]")
 
       std::array mesh_list = MeshDataBaseForTests::get().all3DMeshes();
 
-      for (auto named_mesh : mesh_list) {
+      for (const auto& named_mesh : mesh_list) {
         SECTION(named_mesh.name())
         {
           auto mesh = named_mesh.mesh();
diff --git a/tests/test_DiscreteFunctionUtils.cpp b/tests/test_DiscreteFunctionUtils.cpp
index 3783a19c9..c1cb07afe 100644
--- a/tests/test_DiscreteFunctionUtils.cpp
+++ b/tests/test_DiscreteFunctionUtils.cpp
@@ -18,7 +18,7 @@ TEST_CASE("DiscreteFunctionUtils", "[scheme]")
 
     std::array mesh_list = MeshDataBaseForTests::get().all1DMeshes();
 
-    for (auto named_mesh : mesh_list) {
+    for (const auto& named_mesh : mesh_list) {
       SECTION(named_mesh.name())
       {
         auto mesh = named_mesh.mesh();
@@ -171,7 +171,7 @@ TEST_CASE("DiscreteFunctionUtils", "[scheme]")
 
     std::array mesh_list = MeshDataBaseForTests::get().all2DMeshes();
 
-    for (auto named_mesh : mesh_list) {
+    for (const auto& named_mesh : mesh_list) {
       SECTION(named_mesh.name())
       {
         auto mesh = named_mesh.mesh();
@@ -324,7 +324,7 @@ TEST_CASE("DiscreteFunctionUtils", "[scheme]")
 
     std::array mesh_list = MeshDataBaseForTests::get().all3DMeshes();
 
-    for (auto named_mesh : mesh_list) {
+    for (const auto& named_mesh : mesh_list) {
       SECTION(named_mesh.name())
       {
         auto mesh = named_mesh.mesh();
@@ -479,7 +479,7 @@ TEST_CASE("DiscreteFunctionUtils", "[scheme]")
 
       std::array mesh_list = MeshDataBaseForTests::get().all1DMeshes();
 
-      for (auto named_mesh : mesh_list) {
+      for (const auto& named_mesh : mesh_list) {
         SECTION(named_mesh.name())
         {
           auto mesh = named_mesh.mesh();
diff --git a/tests/test_DiscreteFunctionVectorIntegrator.cpp b/tests/test_DiscreteFunctionVectorIntegrator.cpp
index 31fd447f5..848db0dfd 100644
--- a/tests/test_DiscreteFunctionVectorIntegrator.cpp
+++ b/tests/test_DiscreteFunctionVectorIntegrator.cpp
@@ -60,7 +60,7 @@ TEST_CASE("DiscreteFunctionVectorIntegrator", "[scheme]")
 
     std::array mesh_list = MeshDataBaseForTests::get().all1DMeshes();
 
-    for (auto named_mesh : mesh_list) {
+    for (const auto& named_mesh : mesh_list) {
       SECTION(named_mesh.name())
       {
         auto mesh_1d = named_mesh.mesh();
@@ -153,7 +153,7 @@ let R_scalar_non_linear_1d: R^1 -> R, x -> 2 * exp(x[0]) + 3;
 
     std::array mesh_list = MeshDataBaseForTests::get().all2DMeshes();
 
-    for (auto named_mesh : mesh_list) {
+    for (const auto& named_mesh : mesh_list) {
       SECTION(named_mesh.name())
       {
         auto mesh_2d = named_mesh.mesh();
@@ -246,7 +246,7 @@ let R_scalar_non_linear_2d: R^2 -> R, x -> 2 * exp(x[0] + x[1]) + 3;
 
     std::array mesh_list = MeshDataBaseForTests::get().all3DMeshes();
 
-    for (auto named_mesh : mesh_list) {
+    for (const auto& named_mesh : mesh_list) {
       SECTION(named_mesh.name())
       {
         auto mesh_3d = named_mesh.mesh();
@@ -337,7 +337,7 @@ let R_scalar_non_linear_3d: R^3 -> R, x -> 2 * exp(x[0] + x[1]) + 3 * x[2];
 
     std::shared_ptr<const IQuadratureDescriptor> quadrature_descriptor = std::make_shared<GaussQuadratureDescriptor>(3);
 
-    for (auto named_mesh : mesh_list) {
+    for (const auto& named_mesh : mesh_list) {
       SECTION(named_mesh.name())
       {
         auto mesh_3d = named_mesh.mesh();
diff --git a/tests/test_DiscreteFunctionVectorInterpoler.cpp b/tests/test_DiscreteFunctionVectorInterpoler.cpp
index 3c3fefc38..a52e0e7c8 100644
--- a/tests/test_DiscreteFunctionVectorInterpoler.cpp
+++ b/tests/test_DiscreteFunctionVectorInterpoler.cpp
@@ -55,7 +55,7 @@ TEST_CASE("DiscreteFunctionVectorInterpoler", "[scheme]")
 
     std::array mesh_list = MeshDataBaseForTests::get().all1DMeshes();
 
-    for (auto named_mesh : mesh_list) {
+    for (const auto& named_mesh : mesh_list) {
       SECTION(named_mesh.name())
       {
         auto mesh_1d = named_mesh.mesh();
@@ -163,7 +163,7 @@ let R_scalar_non_linear_1d: R^1 -> R, x -> 2 * exp(x[0]) + 3;
 
     std::array mesh_list = MeshDataBaseForTests::get().all2DMeshes();
 
-    for (auto named_mesh : mesh_list) {
+    for (const auto& named_mesh : mesh_list) {
       SECTION(named_mesh.name())
       {
         auto mesh_2d = named_mesh.mesh();
@@ -271,7 +271,7 @@ let R_scalar_non_linear_2d: R^2 -> R, x -> 2 * exp(x[0] + x[1]) + 3;
 
     std::array mesh_list = MeshDataBaseForTests::get().all3DMeshes();
 
-    for (auto named_mesh : mesh_list) {
+    for (const auto& named_mesh : mesh_list) {
       SECTION(named_mesh.name())
       {
         auto mesh_3d = named_mesh.mesh();
@@ -377,7 +377,7 @@ let R_scalar_non_linear_3d: R^3 -> R, x -> 2 * exp(x[0] + x[1]) + 3 * x[2];
   {
     std::array mesh_list = MeshDataBaseForTests::get().all3DMeshes();
 
-    for (auto named_mesh : mesh_list) {
+    for (const auto& named_mesh : mesh_list) {
       SECTION(named_mesh.name())
       {
         auto mesh_3d = named_mesh.mesh();
diff --git a/tests/test_DiscreteFunctionVectorInterpolerByZone.cpp b/tests/test_DiscreteFunctionVectorInterpolerByZone.cpp
index c3605a232..5bbe87d84 100644
--- a/tests/test_DiscreteFunctionVectorInterpolerByZone.cpp
+++ b/tests/test_DiscreteFunctionVectorInterpolerByZone.cpp
@@ -430,7 +430,7 @@ let R_scalar_non_linear_3d: R^3 -> R, x -> 2 * exp(x[0] + x[1]) + 3 * x[2];
   {
     std::array mesh_list = MeshDataBaseForTests::get().all3DMeshes();
 
-    for (auto named_mesh : mesh_list) {
+    for (const auto& named_mesh : mesh_list) {
       SECTION(named_mesh.name())
       {
         auto mesh_3d = named_mesh.mesh();
diff --git a/tests/test_EdgeIntegrator.cpp b/tests/test_EdgeIntegrator.cpp
index 5dfccbc6c..46f4d423d 100644
--- a/tests/test_EdgeIntegrator.cpp
+++ b/tests/test_EdgeIntegrator.cpp
@@ -35,7 +35,7 @@ TEST_CASE("EdgeIntegrator", "[scheme]")
       mesh_list.push_back(std::make_pair("hybrid mesh", hybrid_mesh));
       mesh_list.push_back(std::make_pair("diamond mesh", DualMeshManager::instance().getDiamondDualMesh(*hybrid_mesh)));
 
-      for (auto mesh_info : mesh_list) {
+      for (const auto& mesh_info : mesh_list) {
         auto mesh_name = mesh_info.first;
         auto mesh      = mesh_info.second;
 
@@ -284,7 +284,7 @@ TEST_CASE("EdgeIntegrator", "[scheme]")
       mesh_list.push_back(std::make_pair("hybrid mesh", hybrid_mesh));
       mesh_list.push_back(std::make_pair("diamond mesh", DualMeshManager::instance().getDiamondDualMesh(*hybrid_mesh)));
 
-      for (auto mesh_info : mesh_list) {
+      for (const auto& mesh_info : mesh_list) {
         auto mesh_name = mesh_info.first;
         auto mesh      = mesh_info.second;
 
@@ -535,7 +535,7 @@ TEST_CASE("EdgeIntegrator", "[scheme]")
       mesh_list.push_back(std::make_pair("hybrid mesh", hybrid_mesh));
       mesh_list.push_back(std::make_pair("diamond mesh", DualMeshManager::instance().getDiamondDualMesh(*hybrid_mesh)));
 
-      for (auto mesh_info : mesh_list) {
+      for (const auto& mesh_info : mesh_list) {
         auto mesh_name = mesh_info.first;
         auto mesh      = mesh_info.second;
 
diff --git a/tests/test_EmbeddedIDiscreteFunctionMathFunctions.cpp b/tests/test_EmbeddedIDiscreteFunctionMathFunctions.cpp
index 5386d9ae6..9508afc69 100644
--- a/tests/test_EmbeddedIDiscreteFunctionMathFunctions.cpp
+++ b/tests/test_EmbeddedIDiscreteFunctionMathFunctions.cpp
@@ -111,7 +111,7 @@ TEST_CASE("EmbeddedIDiscreteFunctionMathFunctions", "[scheme]")
 
     std::array mesh_list = MeshDataBaseForTests::get().all1DMeshes();
 
-    for (auto named_mesh : mesh_list) {
+    for (const auto& named_mesh : mesh_list) {
       SECTION(named_mesh.name())
       {
         auto mesh = named_mesh.mesh();
@@ -683,7 +683,7 @@ TEST_CASE("EmbeddedIDiscreteFunctionMathFunctions", "[scheme]")
 
     std::array mesh_list = MeshDataBaseForTests::get().all2DMeshes();
 
-    for (auto named_mesh : mesh_list) {
+    for (const auto& named_mesh : mesh_list) {
       SECTION(named_mesh.name())
       {
         auto mesh = named_mesh.mesh();
@@ -1253,7 +1253,7 @@ TEST_CASE("EmbeddedIDiscreteFunctionMathFunctions", "[scheme]")
 
     std::array mesh_list = MeshDataBaseForTests::get().all3DMeshes();
 
-    for (auto named_mesh : mesh_list) {
+    for (const auto& named_mesh : mesh_list) {
       SECTION(named_mesh.name())
       {
         auto mesh = named_mesh.mesh();
diff --git a/tests/test_EmbeddedIDiscreteFunctionOperators.cpp b/tests/test_EmbeddedIDiscreteFunctionOperators.cpp
index b955ba24b..54e0e82f1 100644
--- a/tests/test_EmbeddedIDiscreteFunctionOperators.cpp
+++ b/tests/test_EmbeddedIDiscreteFunctionOperators.cpp
@@ -201,7 +201,7 @@ TEST_CASE("EmbeddedIDiscreteFunctionOperators", "[scheme]")
 
       std::array mesh_list = MeshDataBaseForTests::get().all1DMeshes();
 
-      for (auto named_mesh : mesh_list) {
+      for (const auto& named_mesh : mesh_list) {
         SECTION(named_mesh.name())
         {
           auto mesh = named_mesh.mesh();
@@ -900,7 +900,7 @@ TEST_CASE("EmbeddedIDiscreteFunctionOperators", "[scheme]")
 
       std::array mesh_list = MeshDataBaseForTests::get().all2DMeshes();
 
-      for (auto named_mesh : mesh_list) {
+      for (const auto& named_mesh : mesh_list) {
         SECTION(named_mesh.name())
         {
           auto mesh = named_mesh.mesh();
@@ -1599,7 +1599,7 @@ TEST_CASE("EmbeddedIDiscreteFunctionOperators", "[scheme]")
 
       std::array mesh_list = MeshDataBaseForTests::get().all3DMeshes();
 
-      for (auto named_mesh : mesh_list) {
+      for (const auto& named_mesh : mesh_list) {
         SECTION(named_mesh.name())
         {
           auto mesh = named_mesh.mesh();
@@ -2301,7 +2301,7 @@ TEST_CASE("EmbeddedIDiscreteFunctionOperators", "[scheme]")
 
       std::array mesh_list = MeshDataBaseForTests::get().all1DMeshes();
 
-      for (auto named_mesh : mesh_list) {
+      for (const auto& named_mesh : mesh_list) {
         SECTION(named_mesh.name())
         {
           auto mesh = named_mesh.mesh();
@@ -2446,7 +2446,7 @@ TEST_CASE("EmbeddedIDiscreteFunctionOperators", "[scheme]")
 
       std::array mesh_list = MeshDataBaseForTests::get().all2DMeshes();
 
-      for (auto named_mesh : mesh_list) {
+      for (const auto& named_mesh : mesh_list) {
         SECTION(named_mesh.name())
         {
           auto mesh = named_mesh.mesh();
@@ -2591,7 +2591,7 @@ TEST_CASE("EmbeddedIDiscreteFunctionOperators", "[scheme]")
 
       std::array mesh_list = MeshDataBaseForTests::get().all3DMeshes();
 
-      for (auto named_mesh : mesh_list) {
+      for (const auto& named_mesh : mesh_list) {
         SECTION(named_mesh.name())
         {
           auto mesh = named_mesh.mesh();
diff --git a/tests/test_EmbeddedIDiscreteFunctionUtils.cpp b/tests/test_EmbeddedIDiscreteFunctionUtils.cpp
index e7d0e8eea..476103c42 100644
--- a/tests/test_EmbeddedIDiscreteFunctionUtils.cpp
+++ b/tests/test_EmbeddedIDiscreteFunctionUtils.cpp
@@ -31,7 +31,7 @@ TEST_CASE("EmbeddedIDiscreteFunctionUtils", "[language]")
     {
       std::array mesh_list = MeshDataBaseForTests::get().all1DMeshes();
 
-      for (auto named_mesh : mesh_list) {
+      for (const auto& named_mesh : mesh_list) {
         SECTION(named_mesh.name())
         {
           auto mesh_1d = named_mesh.mesh();
@@ -60,7 +60,7 @@ TEST_CASE("EmbeddedIDiscreteFunctionUtils", "[language]")
     {
       std::array mesh_list = MeshDataBaseForTests::get().all1DMeshes();
 
-      for (auto named_mesh : mesh_list) {
+      for (const auto& named_mesh : mesh_list) {
         SECTION(named_mesh.name())
         {
           auto mesh_1d = named_mesh.mesh();
@@ -78,7 +78,7 @@ TEST_CASE("EmbeddedIDiscreteFunctionUtils", "[language]")
     {
       std::array mesh_list = MeshDataBaseForTests::get().all1DMeshes();
 
-      for (auto named_mesh : mesh_list) {
+      for (const auto& named_mesh : mesh_list) {
         SECTION(named_mesh.name())
         {
           auto mesh_1d = named_mesh.mesh();
@@ -99,7 +99,7 @@ TEST_CASE("EmbeddedIDiscreteFunctionUtils", "[language]")
     {
       std::array mesh_list = MeshDataBaseForTests::get().all1DMeshes();
 
-      for (auto named_mesh : mesh_list) {
+      for (const auto& named_mesh : mesh_list) {
         SECTION(named_mesh.name())
         {
           auto mesh_1d = named_mesh.mesh();
@@ -141,7 +141,7 @@ TEST_CASE("EmbeddedIDiscreteFunctionUtils", "[language]")
     {
       std::array mesh_list = MeshDataBaseForTests::get().all1DMeshes();
 
-      for (auto named_mesh : mesh_list) {
+      for (const auto& named_mesh : mesh_list) {
         SECTION(named_mesh.name())
         {
           auto mesh_1d = named_mesh.mesh();
diff --git a/tests/test_FaceIntegrator.cpp b/tests/test_FaceIntegrator.cpp
index 945d765a6..916dcf497 100644
--- a/tests/test_FaceIntegrator.cpp
+++ b/tests/test_FaceIntegrator.cpp
@@ -262,7 +262,7 @@ TEST_CASE("FaceIntegrator", "[scheme]")
       mesh_list.push_back(std::make_pair("hybrid mesh", hybrid_mesh));
       mesh_list.push_back(std::make_pair("diamond mesh", DualMeshManager::instance().getDiamondDualMesh(*hybrid_mesh)));
 
-      for (auto mesh_info : mesh_list) {
+      for (const auto& mesh_info : mesh_list) {
         auto mesh_name = mesh_info.first;
         auto mesh      = mesh_info.second;
 
@@ -754,7 +754,7 @@ TEST_CASE("FaceIntegrator", "[scheme]")
       mesh_list.push_back(std::make_pair("hybrid mesh", hybrid_mesh));
       mesh_list.push_back(std::make_pair("diamond mesh", DualMeshManager::instance().getDiamondDualMesh(*hybrid_mesh)));
 
-      for (auto mesh_info : mesh_list) {
+      for (const auto& mesh_info : mesh_list) {
         auto mesh_name = mesh_info.first;
         auto mesh      = mesh_info.second;
 
@@ -1249,7 +1249,7 @@ TEST_CASE("FaceIntegrator", "[scheme]")
       mesh_list.push_back(std::make_pair("hybrid mesh", hybrid_mesh));
       mesh_list.push_back(std::make_pair("diamond mesh", DualMeshManager::instance().getDiamondDualMesh(*hybrid_mesh)));
 
-      for (auto mesh_info : mesh_list) {
+      for (const auto& mesh_info : mesh_list) {
         auto mesh_name = mesh_info.first;
         auto mesh      = mesh_info.second;
 
diff --git a/tests/test_IntegrateCellArray.cpp b/tests/test_IntegrateCellArray.cpp
index b6b8db8c8..0b64ca10e 100644
--- a/tests/test_IntegrateCellArray.cpp
+++ b/tests/test_IntegrateCellArray.cpp
@@ -51,7 +51,7 @@ TEST_CASE("IntegrateCellArray", "[language]")
 
       std::array mesh_list = MeshDataBaseForTests::get().all1DMeshes();
 
-      for (auto named_mesh : mesh_list) {
+      for (const auto& named_mesh : mesh_list) {
         SECTION(named_mesh.name())
         {
           auto mesh_1d = named_mesh.mesh();
@@ -137,7 +137,7 @@ let g: R^1 -> R, x -> 2 * exp(x[0]) + 3;
 
       std::array mesh_list = MeshDataBaseForTests::get().all2DMeshes();
 
-      for (auto named_mesh : mesh_list) {
+      for (const auto& named_mesh : mesh_list) {
         SECTION(named_mesh.name())
         {
           auto mesh_2d = named_mesh.mesh();
@@ -234,7 +234,7 @@ let g: R^2 -> R, x -> 2*exp(x[0])*sin(x[1])+3;
         return extended_mesh_list;
       }();
 
-      for (auto named_mesh : mesh_list) {
+      for (const auto& named_mesh : mesh_list) {
         SECTION(named_mesh.name())
         {
           auto mesh_3d = named_mesh.mesh();
@@ -336,7 +336,7 @@ let g: R^3 -> R, x -> 2 * exp(x[0]) * sin(x[1]) * x[2] + 3;
 
       std::array mesh_list = MeshDataBaseForTests::get().all1DMeshes();
 
-      for (auto named_mesh : mesh_list) {
+      for (const auto& named_mesh : mesh_list) {
         SECTION(named_mesh.name())
         {
           auto mesh_1d = named_mesh.mesh();
@@ -429,7 +429,7 @@ let g: R^1 -> R, x -> 2 * exp(x[0]) + 3;
 
       std::array mesh_list = MeshDataBaseForTests::get().all2DMeshes();
 
-      for (auto named_mesh : mesh_list) {
+      for (const auto& named_mesh : mesh_list) {
         SECTION(named_mesh.name())
         {
           auto mesh_2d = named_mesh.mesh();
@@ -535,7 +535,7 @@ let g: R^2 -> R, x -> 2*exp(x[0])*sin(x[1])+3;
         return extended_mesh_list;
       }();
 
-      for (auto named_mesh : mesh_list) {
+      for (const auto& named_mesh : mesh_list) {
         SECTION(named_mesh.name())
         {
           auto mesh_3d = named_mesh.mesh();
diff --git a/tests/test_IntegrateCellValue.cpp b/tests/test_IntegrateCellValue.cpp
index 5df4d0c44..c109c227c 100644
--- a/tests/test_IntegrateCellValue.cpp
+++ b/tests/test_IntegrateCellValue.cpp
@@ -49,7 +49,7 @@ TEST_CASE("IntegrateCellValue", "[language]")
 
       std::array mesh_list = MeshDataBaseForTests::get().all1DMeshes();
 
-      for (auto named_mesh : mesh_list) {
+      for (const auto& named_mesh : mesh_list) {
         SECTION(named_mesh.name())
         {
           auto mesh_1d = named_mesh.mesh();
@@ -106,7 +106,7 @@ let R2x2_1d: R^1 -> R^2x2, x -> [[2 * exp(x[0]) * sin(x[0]) + 3, sin(x[0] - 2 *
 
       std::array mesh_list = MeshDataBaseForTests::get().all2DMeshes();
 
-      for (auto named_mesh : mesh_list) {
+      for (const auto& named_mesh : mesh_list) {
         SECTION(named_mesh.name())
         {
           auto mesh_2d = named_mesh.mesh();
@@ -175,7 +175,7 @@ let R3_2d: R^2 -> R^3, x -> [2*exp(x[0])*sin(x[1])+3, x[0]-2*x[1], 3];
         return extended_mesh_list;
       }();
 
-      for (auto named_mesh : mesh_list) {
+      for (const auto& named_mesh : mesh_list) {
         SECTION(named_mesh.name())
         {
           auto mesh_3d = named_mesh.mesh();
@@ -244,7 +244,7 @@ let scalar_3d: R^3 -> R, x -> 2 * exp(x[0]) * sin(x[1]) * x[2] + 3;
 
       std::array mesh_list = MeshDataBaseForTests::get().all1DMeshes();
 
-      for (auto named_mesh : mesh_list) {
+      for (const auto& named_mesh : mesh_list) {
         SECTION(named_mesh.name())
         {
           auto mesh_1d = named_mesh.mesh();
@@ -307,7 +307,7 @@ let scalar_1d: R^1 -> R, x -> 2 * exp(x[0]) + 3;
 
       std::array mesh_list = MeshDataBaseForTests::get().all2DMeshes();
 
-      for (auto named_mesh : mesh_list) {
+      for (const auto& named_mesh : mesh_list) {
         SECTION(named_mesh.name())
         {
           auto mesh_2d = named_mesh.mesh();
@@ -386,7 +386,7 @@ let R3_2d: R^2 -> R^3, x -> [2*exp(x[0])*sin(x[1])+3, x[0]-2*x[1], 3];
         return extended_mesh_list;
       }();
 
-      for (auto named_mesh : mesh_list) {
+      for (const auto& named_mesh : mesh_list) {
         SECTION(named_mesh.name())
         {
           auto mesh_3d = named_mesh.mesh();
diff --git a/tests/test_IntegrateCellValue.hpp b/tests/test_IntegrateCellValue.hpp
deleted file mode 100644
index f9a9e32a9..000000000
--- a/tests/test_IntegrateCellValue.hpp
+++ /dev/null
@@ -1 +0,0 @@
-i_f_symboli_f_symboli_f_symbol
diff --git a/tests/test_IntegrateOnCells.cpp b/tests/test_IntegrateOnCells.cpp
index 80463f083..5207325e8 100644
--- a/tests/test_IntegrateOnCells.cpp
+++ b/tests/test_IntegrateOnCells.cpp
@@ -51,7 +51,7 @@ TEST_CASE("IntegrateOnCells", "[language]")
 
         std::array mesh_list = MeshDataBaseForTests::get().all1DMeshes();
 
-        for (auto named_mesh : mesh_list) {
+        for (const auto& named_mesh : mesh_list) {
           SECTION(named_mesh.name())
           {
             auto mesh_1d = named_mesh.mesh();
@@ -151,7 +151,7 @@ let R2x2_1d: R^1 -> R^2x2, x -> [[2 * exp(x[0]) * sin(x[0]) + 3, sin(x[0] - 2 *
 
         std::array mesh_list = MeshDataBaseForTests::get().all2DMeshes();
 
-        for (auto named_mesh : mesh_list) {
+        for (const auto& named_mesh : mesh_list) {
           SECTION(named_mesh.name())
           {
             auto mesh_2d = named_mesh.mesh();
@@ -264,7 +264,7 @@ let R2x2_2d: R^2 -> R^2x2, x -> [[2*exp(x[0])*sin(x[1])+3, sin(x[0]-2*x[1])], [3
           return extended_mesh_list;
         }();
 
-        for (auto named_mesh : mesh_list) {
+        for (const auto& named_mesh : mesh_list) {
           SECTION(named_mesh.name())
           {
             auto mesh_3d = named_mesh.mesh();
@@ -382,7 +382,7 @@ let R2x2_3d: R^3 -> R^2x2, x -> [[2 * exp(x[0]) * sin(x[1]) + 3 * cos(x[2]), sin
 
         std::array mesh_list = MeshDataBaseForTests::get().all1DMeshes();
 
-        for (auto named_mesh : mesh_list) {
+        for (const auto& named_mesh : mesh_list) {
           SECTION(named_mesh.name())
           {
             auto mesh_1d = named_mesh.mesh();
@@ -491,7 +491,7 @@ let R2x2_1d: R^1 -> R^2x2, x -> [[2 * exp(x[0]) * sin(x[0]) + 3, sin(x[0] - 2 *
 
         std::array mesh_list = MeshDataBaseForTests::get().all2DMeshes();
 
-        for (auto named_mesh : mesh_list) {
+        for (const auto& named_mesh : mesh_list) {
           SECTION(named_mesh.name())
           {
             auto mesh_2d = named_mesh.mesh();
@@ -614,7 +614,7 @@ let R2x2_2d: R^2 -> R^2x2, x -> [[2*exp(x[0])*sin(x[1])+3, sin(x[0]-2*x[1])], [3
           return extended_mesh_list;
         }();
 
-        for (auto named_mesh : mesh_list) {
+        for (const auto& named_mesh : mesh_list) {
           SECTION(named_mesh.name())
           {
             auto mesh_3d = named_mesh.mesh();
@@ -747,7 +747,7 @@ let R2x2_3d: R^3 -> R^2x2, x -> [[2 * exp(x[0]) * sin(x[1]) + 3 * cos(x[2]), sin
 
         std::array mesh_list = MeshDataBaseForTests::get().all1DMeshes();
 
-        for (auto named_mesh : mesh_list) {
+        for (const auto& named_mesh : mesh_list) {
           SECTION(named_mesh.name())
           {
             auto mesh_1d = named_mesh.mesh();
@@ -847,7 +847,7 @@ let R2x2_1d: R^1 -> R^2x2, x -> [[2 * exp(x[0]) * sin(x[0]) + 3, sin(x[0] - 2 *
 
         std::array mesh_list = MeshDataBaseForTests::get().all2DMeshes();
 
-        for (auto named_mesh : mesh_list) {
+        for (const auto& named_mesh : mesh_list) {
           SECTION(named_mesh.name())
           {
             auto mesh_2d = named_mesh.mesh();
@@ -960,7 +960,7 @@ let R2x2_2d: R^2 -> R^2x2, x -> [[2*exp(x[0])*sin(x[1])+3, sin(x[0]-2*x[1])], [3
           return extended_mesh_list;
         }();
 
-        for (auto named_mesh : mesh_list) {
+        for (const auto& named_mesh : mesh_list) {
           SECTION(named_mesh.name())
           {
             auto mesh_3d = named_mesh.mesh();
@@ -1078,7 +1078,7 @@ let R2x2_3d: R^3 -> R^2x2, x -> [[2 * exp(x[0]) * sin(x[1]) + 3 * cos(x[2]), sin
 
         std::array mesh_list = MeshDataBaseForTests::get().all1DMeshes();
 
-        for (auto named_mesh : mesh_list) {
+        for (const auto& named_mesh : mesh_list) {
           SECTION(named_mesh.name())
           {
             auto mesh_1d = named_mesh.mesh();
@@ -1187,7 +1187,7 @@ let R2x2_1d: R^1 -> R^2x2, x -> [[2 * exp(x[0]) * sin(x[0]) + 3, sin(x[0] - 2 *
 
         std::array mesh_list = MeshDataBaseForTests::get().all2DMeshes();
 
-        for (auto named_mesh : mesh_list) {
+        for (const auto& named_mesh : mesh_list) {
           SECTION(named_mesh.name())
           {
             auto mesh_2d = named_mesh.mesh();
@@ -1310,7 +1310,7 @@ let R2x2_2d: R^2 -> R^2x2, x -> [[2*exp(x[0])*sin(x[1])+3, sin(x[0]-2*x[1])], [3
           return extended_mesh_list;
         }();
 
-        for (auto named_mesh : mesh_list) {
+        for (const auto& named_mesh : mesh_list) {
           SECTION(named_mesh.name())
           {
             auto mesh_3d = named_mesh.mesh();
@@ -1443,7 +1443,7 @@ let R2x2_3d: R^3 -> R^2x2, x -> [[2 * exp(x[0]) * sin(x[1]) + 3 * cos(x[2]), sin
 
         std::array mesh_list = MeshDataBaseForTests::get().all1DMeshes();
 
-        for (auto named_mesh : mesh_list) {
+        for (const auto& named_mesh : mesh_list) {
           SECTION(named_mesh.name())
           {
             auto mesh_1d = named_mesh.mesh();
@@ -1543,7 +1543,7 @@ let R2x2_1d: R^1 -> R^2x2, x -> [[2 * exp(x[0]) * sin(x[0]) + 3, sin(x[0] - 2 *
 
         std::array mesh_list = MeshDataBaseForTests::get().all2DMeshes();
 
-        for (auto named_mesh : mesh_list) {
+        for (const auto& named_mesh : mesh_list) {
           SECTION(named_mesh.name())
           {
             auto mesh_2d = named_mesh.mesh();
@@ -1656,7 +1656,7 @@ let R2x2_2d: R^2 -> R^2x2, x -> [[2*exp(x[0])*sin(x[1])+3, sin(x[0]-2*x[1])], [3
           return extended_mesh_list;
         }();
 
-        for (auto named_mesh : mesh_list) {
+        for (const auto& named_mesh : mesh_list) {
           SECTION(named_mesh.name())
           {
             auto mesh_3d = named_mesh.mesh();
@@ -1774,7 +1774,7 @@ let R2x2_3d: R^3 -> R^2x2, x -> [[2 * exp(x[0]) * sin(x[1]) + 3 * cos(x[2]), sin
 
         std::array mesh_list = MeshDataBaseForTests::get().all1DMeshes();
 
-        for (auto named_mesh : mesh_list) {
+        for (const auto& named_mesh : mesh_list) {
           SECTION(named_mesh.name())
           {
             auto mesh_1d = named_mesh.mesh();
@@ -1883,7 +1883,7 @@ let R2x2_1d: R^1 -> R^2x2, x -> [[2 * exp(x[0]) * sin(x[0]) + 3, sin(x[0] - 2 *
 
         std::array mesh_list = MeshDataBaseForTests::get().all2DMeshes();
 
-        for (auto named_mesh : mesh_list) {
+        for (const auto& named_mesh : mesh_list) {
           SECTION(named_mesh.name())
           {
             auto mesh_2d = named_mesh.mesh();
@@ -2006,7 +2006,7 @@ let R2x2_2d: R^2 -> R^2x2, x -> [[2*exp(x[0])*sin(x[1])+3, sin(x[0]-2*x[1])], [3
           return extended_mesh_list;
         }();
 
-        for (auto named_mesh : mesh_list) {
+        for (const auto& named_mesh : mesh_list) {
           SECTION(named_mesh.name())
           {
             auto mesh_3d = named_mesh.mesh();
diff --git a/tests/test_InterpolateItemArray.cpp b/tests/test_InterpolateItemArray.cpp
index 7fd968be9..ccee6e778 100644
--- a/tests/test_InterpolateItemArray.cpp
+++ b/tests/test_InterpolateItemArray.cpp
@@ -48,7 +48,7 @@ TEST_CASE("InterpolateItemArray", "[language]")
 
       std::array mesh_list = MeshDataBaseForTests::get().all1DMeshes();
 
-      for (auto named_mesh : mesh_list) {
+      for (const auto& named_mesh : mesh_list) {
         SECTION(named_mesh.name())
         {
           auto mesh_1d = named_mesh.mesh();
@@ -121,7 +121,7 @@ let scalar_non_linear_1d: R^1 -> R, x -> 2 * exp(x[0]) + 3;
 
       std::array mesh_list = MeshDataBaseForTests::get().all2DMeshes();
 
-      for (auto named_mesh : mesh_list) {
+      for (const auto& named_mesh : mesh_list) {
         SECTION(named_mesh.name())
         {
           auto mesh_2d = named_mesh.mesh();
@@ -194,7 +194,7 @@ let scalar_non_linear_2d: R^2 -> R, x -> 2*exp(x[0])*sin(x[1])+3;
 
       std::array mesh_list = MeshDataBaseForTests::get().all3DMeshes();
 
-      for (auto named_mesh : mesh_list) {
+      for (const auto& named_mesh : mesh_list) {
         SECTION(named_mesh.name())
         {
           auto mesh_3d = named_mesh.mesh();
@@ -281,7 +281,7 @@ let scalar_non_linear_3d: R^3 -> R, x -> 2 * exp(x[0]) * sin(x[1]) * x[2] + 3;
 
       std::array mesh_list = MeshDataBaseForTests::get().all1DMeshes();
 
-      for (auto named_mesh : mesh_list) {
+      for (const auto& named_mesh : mesh_list) {
         SECTION(named_mesh.name())
         {
           auto mesh_1d = named_mesh.mesh();
@@ -362,7 +362,7 @@ let scalar_non_linear_1d: R^1 -> R, x -> 2 * exp(x[0]) + 3;
 
       std::array mesh_list = MeshDataBaseForTests::get().all2DMeshes();
 
-      for (auto named_mesh : mesh_list) {
+      for (const auto& named_mesh : mesh_list) {
         SECTION(named_mesh.name())
         {
           auto mesh_2d = named_mesh.mesh();
@@ -440,7 +440,7 @@ let scalar_non_linear_2d: R^2 -> R, x -> 2*exp(x[0])*sin(x[1])+3;
 
       std::array mesh_list = MeshDataBaseForTests::get().all3DMeshes();
 
-      for (auto named_mesh : mesh_list) {
+      for (const auto& named_mesh : mesh_list) {
         SECTION(named_mesh.name())
         {
           auto mesh_3d = named_mesh.mesh();
diff --git a/tests/test_InterpolateItemValue.cpp b/tests/test_InterpolateItemValue.cpp
index 45832349f..f53921ed1 100644
--- a/tests/test_InterpolateItemValue.cpp
+++ b/tests/test_InterpolateItemValue.cpp
@@ -45,7 +45,7 @@ TEST_CASE("InterpolateItemValue", "[language]")
 
       std::array mesh_list = MeshDataBaseForTests::get().all1DMeshes();
 
-      for (auto named_mesh : mesh_list) {
+      for (const auto& named_mesh : mesh_list) {
         SECTION(named_mesh.name())
         {
           auto mesh_1d = named_mesh.mesh();
@@ -216,7 +216,7 @@ let R2x2_non_linear_1d: R^1 -> R^2x2, x -> [[2 * exp(x[0]) * sin(x[0]) + 3, sin(
 
       std::array mesh_list = MeshDataBaseForTests::get().all2DMeshes();
 
-      for (auto named_mesh : mesh_list) {
+      for (const auto& named_mesh : mesh_list) {
         SECTION(named_mesh.name())
         {
           auto mesh_2d = named_mesh.mesh();
@@ -381,7 +381,7 @@ let R2x2_non_linear_2d: R^2 -> R^2x2, x -> [[2*exp(x[0])*sin(x[1])+3, sin(x[0]-2
 
       std::array mesh_list = MeshDataBaseForTests::get().all3DMeshes();
 
-      for (auto named_mesh : mesh_list) {
+      for (const auto& named_mesh : mesh_list) {
         SECTION(named_mesh.name())
         {
           auto mesh_3d = named_mesh.mesh();
@@ -530,7 +530,7 @@ let R2x2_non_linear_3d: R^3 -> R^2x2, x -> [[2 * exp(x[0]) * sin(x[1]) + 3 * cos
               cell_value.numberOfItems(), PUGS_LAMBDA(const CellId cell_id) {
                 const TinyVector<Dimension>& x = xj[cell_id];
                 cell_value[cell_id]            = TinyMatrix<2>{2 * exp(x[0]) * sin(x[1]) + 3 * cos(x[2]),
-                                                    sin(x[0] - 2 * x[1] * x[2]), 3, x[0] * x[1] * x[2]};
+                                                               sin(x[0] - 2 * x[1] * x[2]), 3, x[0] * x[1] * x[2]};
               });
             CellValue<const TinyMatrix<2>> interpolate_value =
               InterpolateItemValue<TinyMatrix<2>(TinyVector<Dimension>)>::interpolate(function_symbol_id, xj);
@@ -560,7 +560,7 @@ let R2x2_non_linear_3d: R^3 -> R^2x2, x -> [[2 * exp(x[0]) * sin(x[1]) + 3 * cos
 
       std::array mesh_list = MeshDataBaseForTests::get().all1DMeshes();
 
-      for (auto named_mesh : mesh_list) {
+      for (const auto& named_mesh : mesh_list) {
         SECTION(named_mesh.name())
         {
           auto mesh_1d = named_mesh.mesh();
@@ -742,7 +742,7 @@ let R2x2_non_linear_1d: R^1 -> R^2x2, x -> [[2 * exp(x[0]) * sin(x[0]) + 3, sin(
 
       std::array mesh_list = MeshDataBaseForTests::get().all2DMeshes();
 
-      for (auto named_mesh : mesh_list) {
+      for (const auto& named_mesh : mesh_list) {
         SECTION(named_mesh.name())
         {
           auto mesh_2d = named_mesh.mesh();
@@ -916,7 +916,7 @@ let R2x2_non_linear_2d: R^2 -> R^2x2, x -> [[2*exp(x[0])*sin(x[1])+3, sin(x[0]-2
 
       std::array mesh_list = MeshDataBaseForTests::get().all3DMeshes();
 
-      for (auto named_mesh : mesh_list) {
+      for (const auto& named_mesh : mesh_list) {
         SECTION(named_mesh.name())
         {
           auto mesh_3d = named_mesh.mesh();
diff --git a/tests/test_ItemArray.cpp b/tests/test_ItemArray.cpp
index 997e327a1..2dbe964f3 100644
--- a/tests/test_ItemArray.cpp
+++ b/tests/test_ItemArray.cpp
@@ -30,7 +30,7 @@ TEST_CASE("ItemArray", "[mesh]")
   {
     std::array mesh_list = MeshDataBaseForTests::get().all1DMeshes();
 
-    for (auto named_mesh : mesh_list) {
+    for (const auto& named_mesh : mesh_list) {
       SECTION(named_mesh.name())
       {
         auto mesh_1d = named_mesh.mesh();
@@ -68,7 +68,7 @@ TEST_CASE("ItemArray", "[mesh]")
   {
     std::array mesh_list = MeshDataBaseForTests::get().all2DMeshes();
 
-    for (auto named_mesh : mesh_list) {
+    for (const auto& named_mesh : mesh_list) {
       SECTION(named_mesh.name())
       {
         auto mesh_2d = named_mesh.mesh();
@@ -104,7 +104,7 @@ TEST_CASE("ItemArray", "[mesh]")
   {
     std::array mesh_list = MeshDataBaseForTests::get().all3DMeshes();
 
-    for (auto named_mesh : mesh_list) {
+    for (const auto& named_mesh : mesh_list) {
       SECTION(named_mesh.name())
       {
         auto mesh_3d = named_mesh.mesh();
@@ -138,7 +138,7 @@ TEST_CASE("ItemArray", "[mesh]")
   {
     std::array mesh_list = MeshDataBaseForTests::get().all3DMeshes();
 
-    for (auto named_mesh : mesh_list) {
+    for (const auto& named_mesh : mesh_list) {
       SECTION(named_mesh.name())
       {
         auto mesh_3d = named_mesh.mesh();
@@ -189,7 +189,7 @@ TEST_CASE("ItemArray", "[mesh]")
 
     std::array mesh_list = MeshDataBaseForTests::get().all3DMeshes();
 
-    for (auto named_mesh : mesh_list) {
+    for (const auto& named_mesh : mesh_list) {
       SECTION(named_mesh.name())
       {
         auto mesh_3d = named_mesh.mesh();
@@ -224,7 +224,7 @@ TEST_CASE("ItemArray", "[mesh]")
   {
     std::array mesh_list = MeshDataBaseForTests::get().all2DMeshes();
 
-    for (auto named_mesh : mesh_list) {
+    for (const auto& named_mesh : mesh_list) {
       SECTION(named_mesh.name())
       {
         auto mesh_2d = named_mesh.mesh();
@@ -313,7 +313,7 @@ TEST_CASE("ItemArray", "[mesh]")
     {
       std::array mesh_list = MeshDataBaseForTests::get().all3DMeshes();
 
-      for (auto named_mesh : mesh_list) {
+      for (const auto& named_mesh : mesh_list) {
         SECTION(named_mesh.name())
         {
           auto mesh_3d = named_mesh.mesh();
@@ -343,7 +343,7 @@ TEST_CASE("ItemArray", "[mesh]")
     {
       std::array mesh_list = MeshDataBaseForTests::get().all3DMeshes();
 
-      for (auto named_mesh : mesh_list) {
+      for (const auto& named_mesh : mesh_list) {
         SECTION(named_mesh.name())
         {
           auto mesh_3d = named_mesh.mesh();
@@ -360,7 +360,7 @@ TEST_CASE("ItemArray", "[mesh]")
     {
       std::array mesh_list = MeshDataBaseForTests::get().all2DMeshes();
 
-      for (auto named_mesh : mesh_list) {
+      for (const auto& named_mesh : mesh_list) {
         SECTION(named_mesh.name())
         {
           auto mesh_2d = named_mesh.mesh();
@@ -369,7 +369,7 @@ TEST_CASE("ItemArray", "[mesh]")
 
           std::array mesh_list = MeshDataBaseForTests::get().all3DMeshes();
 
-          for (auto named_mesh : mesh_list) {
+          for (const auto& named_mesh : mesh_list) {
             SECTION(named_mesh.name())
             {
               auto mesh_3d = named_mesh.mesh();
diff --git a/tests/test_ItemArrayUtils.cpp b/tests/test_ItemArrayUtils.cpp
index c08167d7e..8c832d16c 100644
--- a/tests/test_ItemArrayUtils.cpp
+++ b/tests/test_ItemArrayUtils.cpp
@@ -20,7 +20,7 @@ TEST_CASE("ItemArrayUtils", "[mesh]")
     {
       std::array mesh_list = MeshDataBaseForTests::get().all1DMeshes();
 
-      for (auto named_mesh : mesh_list) {
+      for (const auto& named_mesh : mesh_list) {
         SECTION(named_mesh.name())
         {
           auto mesh_1d = named_mesh.mesh();
@@ -294,7 +294,7 @@ TEST_CASE("ItemArrayUtils", "[mesh]")
     {
       std::array mesh_list = MeshDataBaseForTests::get().all2DMeshes();
 
-      for (auto named_mesh : mesh_list) {
+      for (const auto& named_mesh : mesh_list) {
         SECTION(named_mesh.name())
         {
           auto mesh_2d = named_mesh.mesh();
@@ -568,7 +568,7 @@ TEST_CASE("ItemArrayUtils", "[mesh]")
     {
       std::array mesh_list = MeshDataBaseForTests::get().all3DMeshes();
 
-      for (auto named_mesh : mesh_list) {
+      for (const auto& named_mesh : mesh_list) {
         SECTION(named_mesh.name())
         {
           auto mesh_3d = named_mesh.mesh();
@@ -845,7 +845,7 @@ TEST_CASE("ItemArrayUtils", "[mesh]")
     {
       std::array mesh_list = MeshDataBaseForTests::get().all1DMeshes();
 
-      for (auto named_mesh : mesh_list) {
+      for (const auto& named_mesh : mesh_list) {
         SECTION(named_mesh.name())
         {
           auto mesh_1d = named_mesh.mesh();
@@ -874,7 +874,7 @@ TEST_CASE("ItemArrayUtils", "[mesh]")
     {
       std::array mesh_list = MeshDataBaseForTests::get().all2DMeshes();
 
-      for (auto named_mesh : mesh_list) {
+      for (const auto& named_mesh : mesh_list) {
         SECTION(named_mesh.name())
         {
           auto mesh_2d = named_mesh.mesh();
@@ -903,7 +903,7 @@ TEST_CASE("ItemArrayUtils", "[mesh]")
     {
       std::array mesh_list = MeshDataBaseForTests::get().all3DMeshes();
 
-      for (auto named_mesh : mesh_list) {
+      for (const auto& named_mesh : mesh_list) {
         SECTION(named_mesh.name())
         {
           auto mesh_3d = named_mesh.mesh();
@@ -935,7 +935,7 @@ TEST_CASE("ItemArrayUtils", "[mesh]")
     {
       std::array mesh_list = MeshDataBaseForTests::get().all1DMeshes();
 
-      for (auto named_mesh : mesh_list) {
+      for (const auto& named_mesh : mesh_list) {
         SECTION(named_mesh.name())
         {
           auto mesh_1d = named_mesh.mesh();
@@ -964,7 +964,7 @@ TEST_CASE("ItemArrayUtils", "[mesh]")
     {
       std::array mesh_list = MeshDataBaseForTests::get().all2DMeshes();
 
-      for (auto named_mesh : mesh_list) {
+      for (const auto& named_mesh : mesh_list) {
         SECTION(named_mesh.name())
         {
           auto mesh_2d = named_mesh.mesh();
@@ -993,7 +993,7 @@ TEST_CASE("ItemArrayUtils", "[mesh]")
     {
       std::array mesh_list = MeshDataBaseForTests::get().all3DMeshes();
 
-      for (auto named_mesh : mesh_list) {
+      for (const auto& named_mesh : mesh_list) {
         SECTION(named_mesh.name())
         {
           auto mesh_3d = named_mesh.mesh();
@@ -1025,7 +1025,7 @@ TEST_CASE("ItemArrayUtils", "[mesh]")
     {
       std::array mesh_list = MeshDataBaseForTests::get().all1DMeshes();
 
-      for (auto named_mesh : mesh_list) {
+      for (const auto& named_mesh : mesh_list) {
         SECTION(named_mesh.name())
         {
           auto mesh_1d = named_mesh.mesh();
@@ -1054,7 +1054,7 @@ TEST_CASE("ItemArrayUtils", "[mesh]")
     {
       std::array mesh_list = MeshDataBaseForTests::get().all2DMeshes();
 
-      for (auto named_mesh : mesh_list) {
+      for (const auto& named_mesh : mesh_list) {
         SECTION(named_mesh.name() + " for size_t data")
         {
           auto mesh_2d = named_mesh.mesh();
@@ -1108,7 +1108,7 @@ TEST_CASE("ItemArrayUtils", "[mesh]")
     {
       std::array mesh_list = MeshDataBaseForTests::get().all3DMeshes();
 
-      for (auto named_mesh : mesh_list) {
+      for (const auto& named_mesh : mesh_list) {
         SECTION(named_mesh.name() + " for size_t data")
         {
           auto mesh_3d = named_mesh.mesh();
diff --git a/tests/test_ItemValue.cpp b/tests/test_ItemValue.cpp
index 702110f7a..4271db6c2 100644
--- a/tests/test_ItemValue.cpp
+++ b/tests/test_ItemValue.cpp
@@ -28,7 +28,7 @@ TEST_CASE("ItemValue", "[mesh]")
   {
     std::array mesh_list = MeshDataBaseForTests::get().all1DMeshes();
 
-    for (auto named_mesh : mesh_list) {
+    for (const auto& named_mesh : mesh_list) {
       SECTION(named_mesh.name())
       {
         auto mesh_1d = named_mesh.mesh();
@@ -61,7 +61,7 @@ TEST_CASE("ItemValue", "[mesh]")
   {
     std::array mesh_list = MeshDataBaseForTests::get().all2DMeshes();
 
-    for (auto named_mesh : mesh_list) {
+    for (const auto& named_mesh : mesh_list) {
       SECTION(named_mesh.name())
       {
         auto mesh_2d = named_mesh.mesh();
@@ -90,7 +90,7 @@ TEST_CASE("ItemValue", "[mesh]")
   {
     std::array mesh_list = MeshDataBaseForTests::get().all3DMeshes();
 
-    for (auto named_mesh : mesh_list) {
+    for (const auto& named_mesh : mesh_list) {
       SECTION(named_mesh.name())
       {
         auto mesh_3d = named_mesh.mesh();
@@ -114,7 +114,7 @@ TEST_CASE("ItemValue", "[mesh]")
   {
     std::array mesh_list = MeshDataBaseForTests::get().all3DMeshes();
 
-    for (auto named_mesh : mesh_list) {
+    for (const auto& named_mesh : mesh_list) {
       SECTION(named_mesh.name())
       {
         auto mesh_3d = named_mesh.mesh();
@@ -144,7 +144,7 @@ TEST_CASE("ItemValue", "[mesh]")
   {
     std::array mesh_list = MeshDataBaseForTests::get().all3DMeshes();
 
-    for (auto named_mesh : mesh_list) {
+    for (const auto& named_mesh : mesh_list) {
       SECTION(named_mesh.name())
       {
         auto mesh_3d = named_mesh.mesh();
@@ -182,7 +182,7 @@ TEST_CASE("ItemValue", "[mesh]")
   {
     std::array mesh_list = MeshDataBaseForTests::get().all2DMeshes();
 
-    for (auto named_mesh : mesh_list) {
+    for (const auto& named_mesh : mesh_list) {
       SECTION(named_mesh.name())
       {
         auto mesh_2d = named_mesh.mesh();
@@ -257,7 +257,7 @@ TEST_CASE("ItemValue", "[mesh]")
     {
       std::array mesh_list = MeshDataBaseForTests::get().all3DMeshes();
 
-      for (auto named_mesh : mesh_list) {
+      for (const auto& named_mesh : mesh_list) {
         SECTION(named_mesh.name())
         {
           auto mesh_3d = named_mesh.mesh();
@@ -287,7 +287,7 @@ TEST_CASE("ItemValue", "[mesh]")
     {
       std::array mesh_list = MeshDataBaseForTests::get().all3DMeshes();
 
-      for (auto named_mesh : mesh_list) {
+      for (const auto& named_mesh : mesh_list) {
         SECTION(named_mesh.name())
         {
           auto mesh_3d = named_mesh.mesh();
@@ -304,7 +304,7 @@ TEST_CASE("ItemValue", "[mesh]")
     {
       std::array mesh_list = MeshDataBaseForTests::get().all2DMeshes();
 
-      for (auto named_mesh : mesh_list) {
+      for (const auto& named_mesh : mesh_list) {
         SECTION(named_mesh.name())
         {
           auto mesh_2d = named_mesh.mesh();
@@ -313,7 +313,7 @@ TEST_CASE("ItemValue", "[mesh]")
 
           std::array mesh_list = MeshDataBaseForTests::get().all3DMeshes();
 
-          for (auto named_mesh : mesh_list) {
+          for (const auto& named_mesh : mesh_list) {
             SECTION(named_mesh.name())
             {
               auto mesh_3d = named_mesh.mesh();
diff --git a/tests/test_ItemValueUtils.cpp b/tests/test_ItemValueUtils.cpp
index 42ed106fd..755392515 100644
--- a/tests/test_ItemValueUtils.cpp
+++ b/tests/test_ItemValueUtils.cpp
@@ -18,7 +18,7 @@ TEST_CASE("ItemValueUtils", "[mesh]")
   {
     std::array mesh_list = MeshDataBaseForTests::get().all2DMeshes();
 
-    for (auto named_mesh : mesh_list) {
+    for (const auto& named_mesh : mesh_list) {
       SECTION(named_mesh.name())
       {
         auto mesh_2d = named_mesh.mesh();
@@ -71,7 +71,7 @@ TEST_CASE("ItemValueUtils", "[mesh]")
     {
       std::array mesh_list = MeshDataBaseForTests::get().all1DMeshes();
 
-      for (auto named_mesh : mesh_list) {
+      for (const auto& named_mesh : mesh_list) {
         SECTION(named_mesh.name())
         {
           auto mesh_1d = named_mesh.mesh();
@@ -98,7 +98,7 @@ TEST_CASE("ItemValueUtils", "[mesh]")
     {
       std::array mesh_list = MeshDataBaseForTests::get().all2DMeshes();
 
-      for (auto named_mesh : mesh_list) {
+      for (const auto& named_mesh : mesh_list) {
         SECTION(named_mesh.name())
         {
           auto mesh_2d = named_mesh.mesh();
@@ -125,7 +125,7 @@ TEST_CASE("ItemValueUtils", "[mesh]")
     {
       std::array mesh_list = MeshDataBaseForTests::get().all3DMeshes();
 
-      for (auto named_mesh : mesh_list) {
+      for (const auto& named_mesh : mesh_list) {
         SECTION(named_mesh.name())
         {
           auto mesh_3d = named_mesh.mesh();
@@ -155,7 +155,7 @@ TEST_CASE("ItemValueUtils", "[mesh]")
     {
       std::array mesh_list = MeshDataBaseForTests::get().all1DMeshes();
 
-      for (auto named_mesh : mesh_list) {
+      for (const auto& named_mesh : mesh_list) {
         SECTION(named_mesh.name())
         {
           auto mesh_1d = named_mesh.mesh();
@@ -182,7 +182,7 @@ TEST_CASE("ItemValueUtils", "[mesh]")
     {
       std::array mesh_list = MeshDataBaseForTests::get().all2DMeshes();
 
-      for (auto named_mesh : mesh_list) {
+      for (const auto& named_mesh : mesh_list) {
         SECTION(named_mesh.name())
         {
           auto mesh_2d = named_mesh.mesh();
@@ -209,7 +209,7 @@ TEST_CASE("ItemValueUtils", "[mesh]")
     {
       std::array mesh_list = MeshDataBaseForTests::get().all3DMeshes();
 
-      for (auto named_mesh : mesh_list) {
+      for (const auto& named_mesh : mesh_list) {
         SECTION(named_mesh.name())
         {
           auto mesh_3d = named_mesh.mesh();
@@ -239,7 +239,7 @@ TEST_CASE("ItemValueUtils", "[mesh]")
     {
       std::array mesh_list = MeshDataBaseForTests::get().all1DMeshes();
 
-      for (auto named_mesh : mesh_list) {
+      for (const auto& named_mesh : mesh_list) {
         SECTION(named_mesh.name())
         {
           auto mesh_1d = named_mesh.mesh();
@@ -268,7 +268,7 @@ TEST_CASE("ItemValueUtils", "[mesh]")
     {
       std::array mesh_list = MeshDataBaseForTests::get().all2DMeshes();
 
-      for (auto named_mesh : mesh_list) {
+      for (const auto& named_mesh : mesh_list) {
         SECTION(named_mesh.name() + "for size_t data")
         {
           auto mesh_2d = named_mesh.mesh();
@@ -321,7 +321,7 @@ TEST_CASE("ItemValueUtils", "[mesh]")
     {
       std::array mesh_list = MeshDataBaseForTests::get().all3DMeshes();
 
-      for (auto named_mesh : mesh_list) {
+      for (const auto& named_mesh : mesh_list) {
         SECTION(named_mesh.name() + " for size_t data")
         {
           auto mesh_3d = named_mesh.mesh();
diff --git a/tests/test_ItemValueVariantFunctionInterpoler.cpp b/tests/test_ItemValueVariantFunctionInterpoler.cpp
index 8689b1086..19f53e108 100644
--- a/tests/test_ItemValueVariantFunctionInterpoler.cpp
+++ b/tests/test_ItemValueVariantFunctionInterpoler.cpp
@@ -43,7 +43,7 @@ TEST_CASE("ItemValueVariantFunctionInterpoler", "[scheme]")
 
     std::array mesh_list = MeshDataBaseForTests::get().all1DMeshes();
 
-    for (auto named_mesh : mesh_list) {
+    for (const auto& named_mesh : mesh_list) {
       SECTION(named_mesh.name())
       {
         auto mesh_1d = named_mesh.mesh();
@@ -323,7 +323,7 @@ let R3x3_non_linear_1d: R^1 -> R^3x3, x -> [[2 * exp(x[0]) * sin(x[0]) + 3, sin(
 
     std::array mesh_list = MeshDataBaseForTests::get().all2DMeshes();
 
-    for (auto named_mesh : mesh_list) {
+    for (const auto& named_mesh : mesh_list) {
       SECTION(named_mesh.name())
       {
         auto mesh_2d = named_mesh.mesh();
@@ -442,7 +442,7 @@ let R3x3_non_linear_2d: R^2 -> R^3x3, x -> [[2 * exp(x[0]) * sin(x[1]) + 3, sin(
 
     std::array mesh_list = MeshDataBaseForTests::get().all3DMeshes();
 
-    for (auto named_mesh : mesh_list) {
+    for (const auto& named_mesh : mesh_list) {
       SECTION(named_mesh.name())
       {
         auto mesh_3d = named_mesh.mesh();
diff --git a/tests/test_MeshEdgeBoundary.cpp b/tests/test_MeshEdgeBoundary.cpp
index 32c1d1c6e..07711f27d 100644
--- a/tests/test_MeshEdgeBoundary.cpp
+++ b/tests/test_MeshEdgeBoundary.cpp
@@ -72,7 +72,7 @@ TEST_CASE("MeshEdgeBoundary", "[mesh]")
       {
         const std::set<std::string> name_set = {"XMIN", "XMAX"};
 
-        for (auto name : name_set) {
+        for (const auto& name : name_set) {
           NamedBoundaryDescriptor named_boundary_descriptor(name);
           const auto& edge_boundary = getMeshEdgeBoundary(mesh, named_boundary_descriptor);
 
@@ -105,7 +105,7 @@ TEST_CASE("MeshEdgeBoundary", "[mesh]")
       {
         const std::set<std::string> name_set = {"XMIN", "XMAX"};
 
-        for (auto name : name_set) {
+        for (const auto& name : name_set) {
           NamedBoundaryDescriptor named_boundary_descriptor(name);
           const auto& edge_boundary = getMeshEdgeBoundary(mesh, named_boundary_descriptor);
 
@@ -145,7 +145,7 @@ TEST_CASE("MeshEdgeBoundary", "[mesh]")
       {
         const std::set<std::string> name_set = {"XMIN", "XMAX", "YMIN", "YMAX"};
 
-        for (auto name : name_set) {
+        for (const auto& name : name_set) {
           NamedBoundaryDescriptor numbered_boundary_descriptor(name);
           const auto& edge_boundary = getMeshEdgeBoundary(mesh, numbered_boundary_descriptor);
 
@@ -177,7 +177,7 @@ TEST_CASE("MeshEdgeBoundary", "[mesh]")
       {
         const std::set<std::string> name_set = {"XMIN", "YMIN", "XMAX", "YMIN"};
 
-        for (auto name : name_set) {
+        for (const auto& name : name_set) {
           NamedBoundaryDescriptor numbered_boundary_descriptor(name);
           const auto& edge_boundary = getMeshEdgeBoundary(mesh, numbered_boundary_descriptor);
 
@@ -217,7 +217,7 @@ TEST_CASE("MeshEdgeBoundary", "[mesh]")
       {
         const std::set<std::string> name_set = {"XMIN", "XMAX", "YMIN", "YMAX", "ZMIN", "ZMAX"};
 
-        for (auto name : name_set) {
+        for (const auto& name : name_set) {
           NamedBoundaryDescriptor numbered_boundary_descriptor(name);
           const auto& edge_boundary = getMeshEdgeBoundary(mesh, numbered_boundary_descriptor);
 
@@ -249,7 +249,7 @@ TEST_CASE("MeshEdgeBoundary", "[mesh]")
       {
         const std::set<std::string> name_set = {"XMIN", "XMAX", "YMIN", "YMAX", "ZMIN", "ZMAX"};
 
-        for (auto name : name_set) {
+        for (const auto& name : name_set) {
           NamedBoundaryDescriptor numbered_boundary_descriptor(name);
           const auto& edge_boundary = getMeshEdgeBoundary(mesh, numbered_boundary_descriptor);
 
diff --git a/tests/test_MeshFaceBoundary.cpp b/tests/test_MeshFaceBoundary.cpp
index 472427aaf..aa4142d6b 100644
--- a/tests/test_MeshFaceBoundary.cpp
+++ b/tests/test_MeshFaceBoundary.cpp
@@ -72,7 +72,7 @@ TEST_CASE("MeshFaceBoundary", "[mesh]")
       {
         const std::set<std::string> name_set = {"XMIN", "XMAX"};
 
-        for (auto name : name_set) {
+        for (const auto& name : name_set) {
           NamedBoundaryDescriptor named_boundary_descriptor(name);
           const auto& face_boundary = getMeshFaceBoundary(mesh, named_boundary_descriptor);
 
@@ -105,7 +105,7 @@ TEST_CASE("MeshFaceBoundary", "[mesh]")
       {
         const std::set<std::string> name_set = {"XMIN", "XMAX"};
 
-        for (auto name : name_set) {
+        for (const auto& name : name_set) {
           NamedBoundaryDescriptor named_boundary_descriptor(name);
           const auto& face_boundary = getMeshFaceBoundary(mesh, named_boundary_descriptor);
 
@@ -145,7 +145,7 @@ TEST_CASE("MeshFaceBoundary", "[mesh]")
       {
         const std::set<std::string> name_set = {"XMIN", "XMAX", "YMIN", "YMAX"};
 
-        for (auto name : name_set) {
+        for (const auto& name : name_set) {
           NamedBoundaryDescriptor numbered_boundary_descriptor(name);
           const auto& face_boundary = getMeshFaceBoundary(mesh, numbered_boundary_descriptor);
 
@@ -177,7 +177,7 @@ TEST_CASE("MeshFaceBoundary", "[mesh]")
       {
         const std::set<std::string> name_set = {"XMIN", "YMIN", "XMAX", "YMIN"};
 
-        for (auto name : name_set) {
+        for (const auto& name : name_set) {
           NamedBoundaryDescriptor numbered_boundary_descriptor(name);
           const auto& face_boundary = getMeshFaceBoundary(mesh, numbered_boundary_descriptor);
 
@@ -217,7 +217,7 @@ TEST_CASE("MeshFaceBoundary", "[mesh]")
       {
         const std::set<std::string> name_set = {"XMIN", "XMAX", "YMIN", "YMAX", "ZMIN", "ZMAX"};
 
-        for (auto name : name_set) {
+        for (const auto& name : name_set) {
           NamedBoundaryDescriptor numbered_boundary_descriptor(name);
           const auto& face_boundary = getMeshFaceBoundary(mesh, numbered_boundary_descriptor);
 
@@ -249,7 +249,7 @@ TEST_CASE("MeshFaceBoundary", "[mesh]")
       {
         const std::set<std::string> name_set = {"XMIN", "XMAX", "YMIN", "YMAX", "ZMIN", "ZMAX"};
 
-        for (auto name : name_set) {
+        for (const auto& name : name_set) {
           NamedBoundaryDescriptor numbered_boundary_descriptor(name);
           const auto& face_boundary = getMeshFaceBoundary(mesh, numbered_boundary_descriptor);
 
diff --git a/tests/test_MeshFlatEdgeBoundary.cpp b/tests/test_MeshFlatEdgeBoundary.cpp
index 947005982..16d843ade 100644
--- a/tests/test_MeshFlatEdgeBoundary.cpp
+++ b/tests/test_MeshFlatEdgeBoundary.cpp
@@ -95,7 +95,7 @@ TEST_CASE("MeshFlatEdgeBoundary", "[mesh]")
         {
           const std::set<std::string> name_set = {"XMIN", "XMAX"};
 
-          for (auto name : name_set) {
+          for (const auto& name : name_set) {
             NamedBoundaryDescriptor named_boundary_descriptor(name);
             const auto& edge_boundary = getMeshFlatEdgeBoundary(mesh, named_boundary_descriptor);
 
@@ -158,7 +158,7 @@ TEST_CASE("MeshFlatEdgeBoundary", "[mesh]")
         {
           const std::set<std::string> name_set = {"XMIN", "XMAX"};
 
-          for (auto name : name_set) {
+          for (const auto& name : name_set) {
             NamedBoundaryDescriptor named_boundary_descriptor(name);
             const auto& edge_boundary = getMeshFlatEdgeBoundary(mesh, named_boundary_descriptor);
 
@@ -250,7 +250,7 @@ TEST_CASE("MeshFlatEdgeBoundary", "[mesh]")
         {
           const std::set<std::string> name_set = {"XMIN", "XMAX", "YMIN", "YMAX"};
 
-          for (auto name : name_set) {
+          for (const auto& name : name_set) {
             NamedBoundaryDescriptor named_boundary_descriptor(name);
             const auto& edge_boundary = getMeshFlatEdgeBoundary(mesh, named_boundary_descriptor);
 
@@ -346,7 +346,7 @@ TEST_CASE("MeshFlatEdgeBoundary", "[mesh]")
         {
           const std::set<std::string> name_set = {"XMIN", "XMAX", "YMIN", "YMAX"};
 
-          for (auto name : name_set) {
+          for (const auto& name : name_set) {
             NamedBoundaryDescriptor named_boundary_descriptor(name);
             const auto& edge_boundary = getMeshFlatEdgeBoundary(mesh, named_boundary_descriptor);
 
@@ -494,7 +494,7 @@ TEST_CASE("MeshFlatEdgeBoundary", "[mesh]")
         {
           const std::set<std::string> name_set = {"XMIN", "XMAX", "YMIN", "YMAX", "ZMIN", "ZMAX"};
 
-          for (auto name : name_set) {
+          for (const auto& name : name_set) {
             NamedBoundaryDescriptor named_boundary_descriptor(name);
             const auto& edge_boundary = getMeshFlatEdgeBoundary(mesh, named_boundary_descriptor);
 
@@ -669,7 +669,7 @@ TEST_CASE("MeshFlatEdgeBoundary", "[mesh]")
         {
           const std::set<std::string> name_set = {"XMIN", "XMAX", "YMIN", "YMAX", "ZMIN", "ZMAX"};
 
-          for (auto name : name_set) {
+          for (const auto& name : name_set) {
             NamedBoundaryDescriptor named_boundary_descriptor(name);
             const auto& edge_boundary = getMeshFlatEdgeBoundary(mesh, named_boundary_descriptor);
 
@@ -817,7 +817,7 @@ TEST_CASE("MeshFlatEdgeBoundary", "[mesh]")
         {
           const std::set<std::string> name_set = {"XMIN", "XMAX", "YMIN", "YMAX"};
 
-          for (auto name : name_set) {
+          for (const auto& name : name_set) {
             NamedBoundaryDescriptor named_boundary_descriptor(name);
             const auto& edge_boundary = getMeshFlatEdgeBoundary(mesh, named_boundary_descriptor);
 
@@ -898,7 +898,7 @@ TEST_CASE("MeshFlatEdgeBoundary", "[mesh]")
         {
           const std::set<std::string> name_set = {"XMIN", "XMAX", "YMIN", "YMAX"};
 
-          for (auto name : name_set) {
+          for (const auto& name : name_set) {
             NamedBoundaryDescriptor named_boundary_descriptor(name);
             const auto& edge_boundary = getMeshFlatEdgeBoundary(mesh, named_boundary_descriptor);
 
@@ -1005,7 +1005,7 @@ TEST_CASE("MeshFlatEdgeBoundary", "[mesh]")
         {
           const std::set<std::string> name_set = {"XMIN", "XMAX", "YMIN", "YMAX", "ZMIN", "ZMAX"};
 
-          for (auto name : name_set) {
+          for (const auto& name : name_set) {
             NamedBoundaryDescriptor named_boundary_descriptor(name);
             const auto& edge_boundary = getMeshFlatEdgeBoundary(mesh, named_boundary_descriptor);
 
@@ -1100,7 +1100,7 @@ TEST_CASE("MeshFlatEdgeBoundary", "[mesh]")
         {
           const std::set<std::string> name_set = {"XMIN", "XMAX", "YMIN", "YMAX", "ZMIN", "ZMAX"};
 
-          for (auto name : name_set) {
+          for (const auto& name : name_set) {
             NamedBoundaryDescriptor named_boundary_descriptor(name);
             const auto& edge_boundary = getMeshFlatEdgeBoundary(mesh, named_boundary_descriptor);
 
@@ -1203,7 +1203,7 @@ TEST_CASE("MeshFlatEdgeBoundary", "[mesh]")
         {
           const std::set<std::string> name_set = {"XMIN", "XMAX", "YMIN"};
 
-          for (auto name : name_set) {
+          for (const auto& name : name_set) {
             NamedBoundaryDescriptor named_boundary_descriptor(name);
             const auto& edge_boundary = getMeshFlatEdgeBoundary(mesh, named_boundary_descriptor);
 
@@ -1317,7 +1317,7 @@ TEST_CASE("MeshFlatEdgeBoundary", "[mesh]")
         {
           const std::set<std::string> name_set = {"XMIN", "XMAX", "YMIN", "ZMIN"};
 
-          for (auto name : name_set) {
+          for (const auto& name : name_set) {
             NamedBoundaryDescriptor named_boundary_descriptor(name);
             const auto& edge_boundary = getMeshFlatEdgeBoundary(mesh, named_boundary_descriptor);
 
@@ -1428,7 +1428,7 @@ TEST_CASE("MeshFlatEdgeBoundary", "[mesh]")
         {
           const std::set<std::string> name_set = {"XMIN", "XMAX", "YMIN", "ZMIN"};
 
-          for (auto name : name_set) {
+          for (const auto& name : name_set) {
             NamedBoundaryDescriptor named_boundary_descriptor(name);
             const auto& edge_boundary = getMeshFlatEdgeBoundary(mesh, named_boundary_descriptor);
 
diff --git a/tests/test_MeshFlatFaceBoundary.cpp b/tests/test_MeshFlatFaceBoundary.cpp
index e01d79d1d..08e1779ce 100644
--- a/tests/test_MeshFlatFaceBoundary.cpp
+++ b/tests/test_MeshFlatFaceBoundary.cpp
@@ -95,7 +95,7 @@ TEST_CASE("MeshFlatFaceBoundary", "[mesh]")
         {
           const std::set<std::string> name_set = {"XMIN", "XMAX"};
 
-          for (auto name : name_set) {
+          for (const auto& name : name_set) {
             NamedBoundaryDescriptor named_boundary_descriptor(name);
             const auto& face_boundary = getMeshFlatFaceBoundary(mesh, named_boundary_descriptor);
 
@@ -158,7 +158,7 @@ TEST_CASE("MeshFlatFaceBoundary", "[mesh]")
         {
           const std::set<std::string> name_set = {"XMIN", "XMAX"};
 
-          for (auto name : name_set) {
+          for (const auto& name : name_set) {
             NamedBoundaryDescriptor named_boundary_descriptor(name);
             const auto& face_boundary = getMeshFlatFaceBoundary(mesh, named_boundary_descriptor);
 
@@ -239,7 +239,7 @@ TEST_CASE("MeshFlatFaceBoundary", "[mesh]")
         {
           const std::set<std::string> name_set = {"XMIN", "XMAX", "YMIN", "YMAX"};
 
-          for (auto name : name_set) {
+          for (const auto& name : name_set) {
             NamedBoundaryDescriptor named_boundary_descriptor(name);
             const auto& face_boundary = getMeshFlatFaceBoundary(mesh, named_boundary_descriptor);
 
@@ -313,7 +313,7 @@ TEST_CASE("MeshFlatFaceBoundary", "[mesh]")
         {
           const std::set<std::string> name_set = {"XMIN", "XMAX", "YMIN", "YMAX"};
 
-          for (auto name : name_set) {
+          for (const auto& name : name_set) {
             NamedBoundaryDescriptor named_boundary_descriptor(name);
             const auto& face_boundary = getMeshFlatFaceBoundary(mesh, named_boundary_descriptor);
 
@@ -406,7 +406,7 @@ TEST_CASE("MeshFlatFaceBoundary", "[mesh]")
         {
           const std::set<std::string> name_set = {"XMIN", "XMAX", "YMIN", "YMAX", "ZMIN", "ZMAX"};
 
-          for (auto name : name_set) {
+          for (const auto& name : name_set) {
             NamedBoundaryDescriptor named_boundary_descriptor(name);
             const auto& face_boundary = getMeshFlatFaceBoundary(mesh, named_boundary_descriptor);
 
@@ -493,7 +493,7 @@ TEST_CASE("MeshFlatFaceBoundary", "[mesh]")
         {
           const std::set<std::string> name_set = {"XMIN", "XMAX", "YMIN", "YMAX", "ZMIN", "ZMAX"};
 
-          for (auto name : name_set) {
+          for (const auto& name : name_set) {
             NamedBoundaryDescriptor named_boundary_descriptor(name);
             const auto& face_boundary = getMeshFlatFaceBoundary(mesh, named_boundary_descriptor);
 
@@ -597,7 +597,7 @@ TEST_CASE("MeshFlatFaceBoundary", "[mesh]")
         {
           const std::set<std::string> name_set = {"XMIN", "XMAX", "YMIN", "YMAX"};
 
-          for (auto name : name_set) {
+          for (const auto& name : name_set) {
             NamedBoundaryDescriptor named_boundary_descriptor(name);
             const auto& face_boundary = getMeshFlatFaceBoundary(mesh, named_boundary_descriptor);
 
@@ -678,7 +678,7 @@ TEST_CASE("MeshFlatFaceBoundary", "[mesh]")
         {
           const std::set<std::string> name_set = {"XMIN", "XMAX", "YMIN", "YMAX"};
 
-          for (auto name : name_set) {
+          for (const auto& name : name_set) {
             NamedBoundaryDescriptor named_boundary_descriptor(name);
             const auto& face_boundary = getMeshFlatFaceBoundary(mesh, named_boundary_descriptor);
 
@@ -785,7 +785,7 @@ TEST_CASE("MeshFlatFaceBoundary", "[mesh]")
         {
           const std::set<std::string> name_set = {"XMIN", "XMAX", "YMIN", "YMAX", "ZMIN", "ZMAX"};
 
-          for (auto name : name_set) {
+          for (const auto& name : name_set) {
             NamedBoundaryDescriptor named_boundary_descriptor(name);
             const auto& face_boundary = getMeshFlatFaceBoundary(mesh, named_boundary_descriptor);
 
@@ -880,7 +880,7 @@ TEST_CASE("MeshFlatFaceBoundary", "[mesh]")
         {
           const std::set<std::string> name_set = {"XMIN", "XMAX", "YMIN", "YMAX", "ZMIN", "ZMAX"};
 
-          for (auto name : name_set) {
+          for (const auto& name : name_set) {
             NamedBoundaryDescriptor named_boundary_descriptor(name);
             const auto& face_boundary = getMeshFlatFaceBoundary(mesh, named_boundary_descriptor);
 
@@ -983,7 +983,7 @@ TEST_CASE("MeshFlatFaceBoundary", "[mesh]")
         {
           const std::set<std::string> name_set = {"XMIN", "XMAX", "YMIN"};
 
-          for (auto name : name_set) {
+          for (const auto& name : name_set) {
             NamedBoundaryDescriptor named_boundary_descriptor(name);
             const auto& face_boundary = getMeshFlatFaceBoundary(mesh, named_boundary_descriptor);
 
@@ -1097,7 +1097,7 @@ TEST_CASE("MeshFlatFaceBoundary", "[mesh]")
         {
           const std::set<std::string> name_set = {"XMIN", "XMAX", "YMIN", "ZMIN"};
 
-          for (auto name : name_set) {
+          for (const auto& name : name_set) {
             NamedBoundaryDescriptor named_boundary_descriptor(name);
             const auto& face_boundary = getMeshFlatFaceBoundary(mesh, named_boundary_descriptor);
 
@@ -1208,7 +1208,7 @@ TEST_CASE("MeshFlatFaceBoundary", "[mesh]")
         {
           const std::set<std::string> name_set = {"XMIN", "XMAX", "YMIN", "ZMIN"};
 
-          for (auto name : name_set) {
+          for (const auto& name : name_set) {
             NamedBoundaryDescriptor named_boundary_descriptor(name);
             const auto& face_boundary = getMeshFlatFaceBoundary(mesh, named_boundary_descriptor);
 
diff --git a/tests/test_MeshFlatNodeBoundary.cpp b/tests/test_MeshFlatNodeBoundary.cpp
index 29b011056..9b9169f73 100644
--- a/tests/test_MeshFlatNodeBoundary.cpp
+++ b/tests/test_MeshFlatNodeBoundary.cpp
@@ -95,7 +95,7 @@ TEST_CASE("MeshFlatNodeBoundary", "[mesh]")
         {
           const std::set<std::string> name_set = {"XMIN", "XMAX"};
 
-          for (auto name : name_set) {
+          for (const auto& name : name_set) {
             NamedBoundaryDescriptor named_boundary_descriptor(name);
             const auto& node_boundary = getMeshFlatNodeBoundary(mesh, named_boundary_descriptor);
 
@@ -158,7 +158,7 @@ TEST_CASE("MeshFlatNodeBoundary", "[mesh]")
         {
           const std::set<std::string> name_set = {"XMIN", "XMAX"};
 
-          for (auto name : name_set) {
+          for (const auto& name : name_set) {
             NamedBoundaryDescriptor named_boundary_descriptor(name);
             const auto& node_boundary = getMeshFlatNodeBoundary(mesh, named_boundary_descriptor);
 
@@ -250,7 +250,7 @@ TEST_CASE("MeshFlatNodeBoundary", "[mesh]")
         {
           const std::set<std::string> name_set = {"XMIN", "XMAX", "YMIN", "YMAX"};
 
-          for (auto name : name_set) {
+          for (const auto& name : name_set) {
             NamedBoundaryDescriptor named_boundary_descriptor(name);
             const auto& node_boundary = getMeshFlatNodeBoundary(mesh, named_boundary_descriptor);
 
@@ -346,7 +346,7 @@ TEST_CASE("MeshFlatNodeBoundary", "[mesh]")
         {
           const std::set<std::string> name_set = {"XMIN", "XMAX", "YMIN", "YMAX"};
 
-          for (auto name : name_set) {
+          for (const auto& name : name_set) {
             NamedBoundaryDescriptor named_boundary_descriptor(name);
             const auto& node_boundary = getMeshFlatNodeBoundary(mesh, named_boundary_descriptor);
 
@@ -494,7 +494,7 @@ TEST_CASE("MeshFlatNodeBoundary", "[mesh]")
         {
           const std::set<std::string> name_set = {"XMIN", "XMAX", "YMIN", "YMAX", "ZMIN", "ZMAX"};
 
-          for (auto name : name_set) {
+          for (const auto& name : name_set) {
             NamedBoundaryDescriptor named_boundary_descriptor(name);
             const auto& node_boundary = getMeshFlatNodeBoundary(mesh, named_boundary_descriptor);
 
@@ -669,7 +669,7 @@ TEST_CASE("MeshFlatNodeBoundary", "[mesh]")
         {
           const std::set<std::string> name_set = {"XMIN", "XMAX", "YMIN", "YMAX", "ZMIN", "ZMAX"};
 
-          for (auto name : name_set) {
+          for (const auto& name : name_set) {
             NamedBoundaryDescriptor named_boundary_descriptor(name);
             const auto& node_boundary = getMeshFlatNodeBoundary(mesh, named_boundary_descriptor);
 
@@ -817,7 +817,7 @@ TEST_CASE("MeshFlatNodeBoundary", "[mesh]")
         {
           const std::set<std::string> name_set = {"XMIN", "XMAX", "YMIN", "YMAX"};
 
-          for (auto name : name_set) {
+          for (const auto& name : name_set) {
             NamedBoundaryDescriptor named_boundary_descriptor(name);
             const auto& node_boundary = getMeshFlatNodeBoundary(mesh, named_boundary_descriptor);
 
@@ -898,7 +898,7 @@ TEST_CASE("MeshFlatNodeBoundary", "[mesh]")
         {
           const std::set<std::string> name_set = {"XMIN", "XMAX", "YMIN", "YMAX"};
 
-          for (auto name : name_set) {
+          for (const auto& name : name_set) {
             NamedBoundaryDescriptor named_boundary_descriptor(name);
             const auto& node_boundary = getMeshFlatNodeBoundary(mesh, named_boundary_descriptor);
 
@@ -1005,7 +1005,7 @@ TEST_CASE("MeshFlatNodeBoundary", "[mesh]")
         {
           const std::set<std::string> name_set = {"XMIN", "XMAX", "YMIN", "YMAX", "ZMIN", "ZMAX"};
 
-          for (auto name : name_set) {
+          for (const auto& name : name_set) {
             NamedBoundaryDescriptor named_boundary_descriptor(name);
             const auto& node_boundary = getMeshFlatNodeBoundary(mesh, named_boundary_descriptor);
 
@@ -1100,7 +1100,7 @@ TEST_CASE("MeshFlatNodeBoundary", "[mesh]")
         {
           const std::set<std::string> name_set = {"XMIN", "XMAX", "YMIN", "YMAX", "ZMIN", "ZMAX"};
 
-          for (auto name : name_set) {
+          for (const auto& name : name_set) {
             NamedBoundaryDescriptor named_boundary_descriptor(name);
             const auto& node_boundary = getMeshFlatNodeBoundary(mesh, named_boundary_descriptor);
 
@@ -1203,7 +1203,7 @@ TEST_CASE("MeshFlatNodeBoundary", "[mesh]")
         {
           const std::set<std::string> name_set = {"XMIN", "XMAX", "YMIN"};
 
-          for (auto name : name_set) {
+          for (const auto& name : name_set) {
             NamedBoundaryDescriptor named_boundary_descriptor(name);
             const auto& node_boundary = getMeshFlatNodeBoundary(mesh, named_boundary_descriptor);
 
@@ -1317,7 +1317,7 @@ TEST_CASE("MeshFlatNodeBoundary", "[mesh]")
         {
           const std::set<std::string> name_set = {"XMIN", "XMAX", "YMIN", "ZMIN"};
 
-          for (auto name : name_set) {
+          for (const auto& name : name_set) {
             NamedBoundaryDescriptor named_boundary_descriptor(name);
             const auto& node_boundary = getMeshFlatNodeBoundary(mesh, named_boundary_descriptor);
 
@@ -1428,7 +1428,7 @@ TEST_CASE("MeshFlatNodeBoundary", "[mesh]")
         {
           const std::set<std::string> name_set = {"XMIN", "XMAX", "YMIN", "ZMIN"};
 
-          for (auto name : name_set) {
+          for (const auto& name : name_set) {
             NamedBoundaryDescriptor named_boundary_descriptor(name);
             const auto& node_boundary = getMeshFlatNodeBoundary(mesh, named_boundary_descriptor);
 
diff --git a/tests/test_MeshLineEdgeBoundary.cpp b/tests/test_MeshLineEdgeBoundary.cpp
index b4b21d0dc..31d9a578b 100644
--- a/tests/test_MeshLineEdgeBoundary.cpp
+++ b/tests/test_MeshLineEdgeBoundary.cpp
@@ -114,7 +114,7 @@ TEST_CASE("MeshLineEdgeBoundary", "[mesh]")
         {
           const std::set<std::string> name_set = {"XMIN", "XMAX", "YMIN", "YMAX"};
 
-          for (auto name : name_set) {
+          for (const auto& name : name_set) {
             NamedBoundaryDescriptor named_boundary_descriptor(name);
             const auto& edge_boundary = getMeshLineEdgeBoundary(mesh, named_boundary_descriptor);
 
@@ -210,7 +210,7 @@ TEST_CASE("MeshLineEdgeBoundary", "[mesh]")
         {
           const std::set<std::string> name_set = {"XMIN", "XMAX", "YMIN", "YMAX"};
 
-          for (auto name : name_set) {
+          for (const auto& name : name_set) {
             NamedBoundaryDescriptor named_boundary_descriptor(name);
             const auto& edge_boundary = getMeshLineEdgeBoundary(mesh, named_boundary_descriptor);
 
@@ -487,7 +487,7 @@ TEST_CASE("MeshLineEdgeBoundary", "[mesh]")
                                                   "XMINZMIN", "XMINZMAX", "XMAXZMAX", "XMINZMAX",
                                                   "YMINZMIN", "YMINZMAX", "YMAXZMAX", "YMAXZMIN"};
 
-          for (auto name : name_set) {
+          for (const auto& name : name_set) {
             NamedBoundaryDescriptor named_boundary_descriptor(name);
             const auto& edge_boundary = getMeshLineEdgeBoundary(mesh, named_boundary_descriptor);
 
@@ -617,7 +617,7 @@ TEST_CASE("MeshLineEdgeBoundary", "[mesh]")
         {
           const std::set<std::string> name_set = {"XMIN", "XMAX", "YMIN", "YMAX"};
 
-          for (auto name : name_set) {
+          for (const auto& name : name_set) {
             NamedBoundaryDescriptor named_boundary_descriptor(name);
             const auto& edge_boundary = getMeshLineEdgeBoundary(mesh, named_boundary_descriptor);
 
@@ -698,7 +698,7 @@ TEST_CASE("MeshLineEdgeBoundary", "[mesh]")
         {
           const std::set<std::string> name_set = {"XMIN", "XMAX", "YMIN", "YMAX"};
 
-          for (auto name : name_set) {
+          for (const auto& name : name_set) {
             NamedBoundaryDescriptor named_boundary_descriptor(name);
             const auto& edge_boundary = getMeshLineEdgeBoundary(mesh, named_boundary_descriptor);
 
@@ -804,7 +804,7 @@ TEST_CASE("MeshLineEdgeBoundary", "[mesh]")
                                                   "XMINZMIN", "XMINZMAX", "XMAXZMAX", "XMINZMAX",
                                                   "YMINZMIN", "YMINZMAX", "YMAXZMAX", "YMAXZMIN"};
 
-          for (auto name : name_set) {
+          for (const auto& name : name_set) {
             NamedBoundaryDescriptor named_boundary_descriptor(name);
             const auto& edge_boundary = getMeshLineEdgeBoundary(mesh, named_boundary_descriptor);
 
@@ -892,7 +892,7 @@ TEST_CASE("MeshLineEdgeBoundary", "[mesh]")
                                                   "XMINZMIN", "XMINZMAX", "XMAXZMAX", "XMINZMAX",
                                                   "YMINZMIN", "YMINZMAX", "YMAXZMAX", "YMAXZMIN"};
 
-          for (auto name : name_set) {
+          for (const auto& name : name_set) {
             NamedBoundaryDescriptor named_boundary_descriptor(name);
             const auto& edge_boundary = getMeshLineEdgeBoundary(mesh, named_boundary_descriptor);
 
@@ -989,7 +989,7 @@ TEST_CASE("MeshLineEdgeBoundary", "[mesh]")
         {
           const std::set<std::string> name_set = {"XMIN", "XMAX", "YMIN"};
 
-          for (auto name : name_set) {
+          for (const auto& name : name_set) {
             NamedBoundaryDescriptor named_boundary_descriptor(name);
             const auto& edge_boundary = getMeshLineEdgeBoundary(mesh, named_boundary_descriptor);
 
@@ -1105,7 +1105,7 @@ TEST_CASE("MeshLineEdgeBoundary", "[mesh]")
           const std::set<std::string> name_set = {"XMINYMIN", "XMINYMAX", "XMAXYMIN", "XMAXYMAX", "XMINZMIN",
                                                   "XMINZMAX", "XMAXZMAX", "XMINZMAX", "YMINZMIN"};
 
-          for (auto name : name_set) {
+          for (const auto& name : name_set) {
             NamedBoundaryDescriptor named_boundary_descriptor(name);
             const auto& edge_boundary = getMeshLineEdgeBoundary(mesh, named_boundary_descriptor);
 
@@ -1218,7 +1218,7 @@ TEST_CASE("MeshLineEdgeBoundary", "[mesh]")
           const std::set<std::string> name_set = {"XMINYMIN", "XMINYMAX", "XMAXYMIN", "XMAXYMAX", "XMINZMIN",
                                                   "XMINZMAX", "XMAXZMAX", "XMINZMAX", "YMINZMIN"};
 
-          for (auto name : name_set) {
+          for (const auto& name : name_set) {
             NamedBoundaryDescriptor named_boundary_descriptor(name);
             const auto& edge_boundary = getMeshLineEdgeBoundary(mesh, named_boundary_descriptor);
 
diff --git a/tests/test_MeshLineFaceBoundary.cpp b/tests/test_MeshLineFaceBoundary.cpp
index f5cb9eb18..86150aa40 100644
--- a/tests/test_MeshLineFaceBoundary.cpp
+++ b/tests/test_MeshLineFaceBoundary.cpp
@@ -114,7 +114,7 @@ TEST_CASE("MeshLineFaceBoundary", "[mesh]")
         {
           const std::set<std::string> name_set = {"XMIN", "XMAX", "YMIN", "YMAX"};
 
-          for (auto name : name_set) {
+          for (const auto& name : name_set) {
             NamedBoundaryDescriptor named_boundary_descriptor(name);
             const auto& face_boundary = getMeshLineFaceBoundary(mesh, named_boundary_descriptor);
 
@@ -210,7 +210,7 @@ TEST_CASE("MeshLineFaceBoundary", "[mesh]")
         {
           const std::set<std::string> name_set = {"XMIN", "XMAX", "YMIN", "YMAX"};
 
-          for (auto name : name_set) {
+          for (const auto& name : name_set) {
             NamedBoundaryDescriptor named_boundary_descriptor(name);
             const auto& face_boundary = getMeshLineFaceBoundary(mesh, named_boundary_descriptor);
 
@@ -321,7 +321,7 @@ TEST_CASE("MeshLineFaceBoundary", "[mesh]")
         {
           const std::set<std::string> name_set = {"XMIN", "XMAX", "YMIN", "YMAX"};
 
-          for (auto name : name_set) {
+          for (const auto& name : name_set) {
             NamedBoundaryDescriptor named_boundary_descriptor(name);
             const auto& face_boundary = getMeshLineFaceBoundary(mesh, named_boundary_descriptor);
 
@@ -402,7 +402,7 @@ TEST_CASE("MeshLineFaceBoundary", "[mesh]")
         {
           const std::set<std::string> name_set = {"XMIN", "XMAX", "YMIN", "YMAX"};
 
-          for (auto name : name_set) {
+          for (const auto& name : name_set) {
             NamedBoundaryDescriptor named_boundary_descriptor(name);
             const auto& face_boundary = getMeshLineFaceBoundary(mesh, named_boundary_descriptor);
 
@@ -501,7 +501,7 @@ TEST_CASE("MeshLineFaceBoundary", "[mesh]")
         {
           const std::set<std::string> name_set = {"XMIN", "XMAX", "YMIN"};
 
-          for (auto name : name_set) {
+          for (const auto& name : name_set) {
             NamedBoundaryDescriptor named_boundary_descriptor(name);
             const auto& face_boundary = getMeshLineFaceBoundary(mesh, named_boundary_descriptor);
 
diff --git a/tests/test_MeshLineNodeBoundary.cpp b/tests/test_MeshLineNodeBoundary.cpp
index 36c151e2d..f82f69b14 100644
--- a/tests/test_MeshLineNodeBoundary.cpp
+++ b/tests/test_MeshLineNodeBoundary.cpp
@@ -114,7 +114,7 @@ TEST_CASE("MeshLineNodeBoundary", "[mesh]")
         {
           const std::set<std::string> name_set = {"XMIN", "XMAX", "YMIN", "YMAX"};
 
-          for (auto name : name_set) {
+          for (const auto& name : name_set) {
             NamedBoundaryDescriptor named_boundary_descriptor(name);
             const auto& node_boundary = getMeshLineNodeBoundary(mesh, named_boundary_descriptor);
 
@@ -210,7 +210,7 @@ TEST_CASE("MeshLineNodeBoundary", "[mesh]")
         {
           const std::set<std::string> name_set = {"XMIN", "XMAX", "YMIN", "YMAX"};
 
-          for (auto name : name_set) {
+          for (const auto& name : name_set) {
             NamedBoundaryDescriptor named_boundary_descriptor(name);
             const auto& node_boundary = getMeshLineNodeBoundary(mesh, named_boundary_descriptor);
 
@@ -487,7 +487,7 @@ TEST_CASE("MeshLineNodeBoundary", "[mesh]")
                                                   "XMINZMIN", "XMINZMAX", "XMAXZMAX", "XMINZMAX",
                                                   "YMINZMIN", "YMINZMAX", "YMAXZMAX", "YMAXZMIN"};
 
-          for (auto name : name_set) {
+          for (const auto& name : name_set) {
             NamedBoundaryDescriptor named_boundary_descriptor(name);
             const auto& node_boundary = getMeshLineNodeBoundary(mesh, named_boundary_descriptor);
 
@@ -617,7 +617,7 @@ TEST_CASE("MeshLineNodeBoundary", "[mesh]")
         {
           const std::set<std::string> name_set = {"XMIN", "XMAX", "YMIN", "YMAX"};
 
-          for (auto name : name_set) {
+          for (const auto& name : name_set) {
             NamedBoundaryDescriptor named_boundary_descriptor(name);
             const auto& node_boundary = getMeshLineNodeBoundary(mesh, named_boundary_descriptor);
 
@@ -698,7 +698,7 @@ TEST_CASE("MeshLineNodeBoundary", "[mesh]")
         {
           const std::set<std::string> name_set = {"XMIN", "XMAX", "YMIN", "YMAX"};
 
-          for (auto name : name_set) {
+          for (const auto& name : name_set) {
             NamedBoundaryDescriptor named_boundary_descriptor(name);
             const auto& node_boundary = getMeshLineNodeBoundary(mesh, named_boundary_descriptor);
 
@@ -804,7 +804,7 @@ TEST_CASE("MeshLineNodeBoundary", "[mesh]")
                                                   "XMINZMIN", "XMINZMAX", "XMAXZMAX", "XMINZMAX",
                                                   "YMINZMIN", "YMINZMAX", "YMAXZMAX", "YMAXZMIN"};
 
-          for (auto name : name_set) {
+          for (const auto& name : name_set) {
             NamedBoundaryDescriptor named_boundary_descriptor(name);
             const auto& node_boundary = getMeshLineNodeBoundary(mesh, named_boundary_descriptor);
 
@@ -892,7 +892,7 @@ TEST_CASE("MeshLineNodeBoundary", "[mesh]")
                                                   "XMINZMIN", "XMINZMAX", "XMAXZMAX", "XMINZMAX",
                                                   "YMINZMIN", "YMINZMAX", "YMAXZMAX", "YMAXZMIN"};
 
-          for (auto name : name_set) {
+          for (const auto& name : name_set) {
             NamedBoundaryDescriptor named_boundary_descriptor(name);
             const auto& node_boundary = getMeshLineNodeBoundary(mesh, named_boundary_descriptor);
 
@@ -989,7 +989,7 @@ TEST_CASE("MeshLineNodeBoundary", "[mesh]")
         {
           const std::set<std::string> name_set = {"XMIN", "XMAX", "YMIN"};
 
-          for (auto name : name_set) {
+          for (const auto& name : name_set) {
             NamedBoundaryDescriptor named_boundary_descriptor(name);
             const auto& node_boundary = getMeshLineNodeBoundary(mesh, named_boundary_descriptor);
 
@@ -1105,7 +1105,7 @@ TEST_CASE("MeshLineNodeBoundary", "[mesh]")
           const std::set<std::string> name_set = {"XMINYMIN", "XMINYMAX", "XMAXYMIN", "XMAXYMAX", "XMINZMIN",
                                                   "XMINZMAX", "XMAXZMAX", "XMINZMAX", "YMINZMIN"};
 
-          for (auto name : name_set) {
+          for (const auto& name : name_set) {
             NamedBoundaryDescriptor named_boundary_descriptor(name);
             const auto& node_boundary = getMeshLineNodeBoundary(mesh, named_boundary_descriptor);
 
@@ -1218,7 +1218,7 @@ TEST_CASE("MeshLineNodeBoundary", "[mesh]")
           const std::set<std::string> name_set = {"XMINYMIN", "XMINYMAX", "XMAXYMIN", "XMAXYMAX", "XMINZMIN",
                                                   "XMINZMAX", "XMAXZMAX", "XMINZMAX", "YMINZMIN"};
 
-          for (auto name : name_set) {
+          for (const auto& name : name_set) {
             NamedBoundaryDescriptor named_boundary_descriptor(name);
             const auto& node_boundary = getMeshLineNodeBoundary(mesh, named_boundary_descriptor);
 
diff --git a/tests/test_MeshNodeBoundary.cpp b/tests/test_MeshNodeBoundary.cpp
index 2639e6370..c09276cee 100644
--- a/tests/test_MeshNodeBoundary.cpp
+++ b/tests/test_MeshNodeBoundary.cpp
@@ -72,7 +72,7 @@ TEST_CASE("MeshNodeBoundary", "[mesh]")
       {
         const std::set<std::string> name_set = {"XMIN", "XMAX"};
 
-        for (auto name : name_set) {
+        for (const auto& name : name_set) {
           NamedBoundaryDescriptor named_boundary_descriptor(name);
           const auto& node_boundary = getMeshNodeBoundary(mesh, named_boundary_descriptor);
 
@@ -105,7 +105,7 @@ TEST_CASE("MeshNodeBoundary", "[mesh]")
       {
         const std::set<std::string> name_set = {"XMIN", "XMAX"};
 
-        for (auto name : name_set) {
+        for (const auto& name : name_set) {
           NamedBoundaryDescriptor named_boundary_descriptor(name);
           const auto& node_boundary = getMeshNodeBoundary(mesh, named_boundary_descriptor);
 
@@ -146,7 +146,7 @@ TEST_CASE("MeshNodeBoundary", "[mesh]")
         const std::set<std::string> name_set = {"XMIN",     "XMAX",     "YMIN",     "YMAX",
                                                 "XMINYMIN", "XMINYMAX", "XMAXYMIN", "XMAXYMAX"};
 
-        for (auto name : name_set) {
+        for (const auto& name : name_set) {
           NamedBoundaryDescriptor numbered_boundary_descriptor(name);
           const auto& node_boundary = getMeshNodeBoundary(mesh, numbered_boundary_descriptor);
 
@@ -179,7 +179,7 @@ TEST_CASE("MeshNodeBoundary", "[mesh]")
         const std::set<std::string> name_set = {"XMIN",     "YMIN",     "XMAX",     "YMIN",
                                                 "XMINYMIN", "XMINYMAX", "XMAXYMIN", "XMAXYMAX"};
 
-        for (auto name : name_set) {
+        for (const auto& name : name_set) {
           NamedBoundaryDescriptor numbered_boundary_descriptor(name);
           const auto& node_boundary = getMeshNodeBoundary(mesh, numbered_boundary_descriptor);
 
@@ -227,7 +227,7 @@ TEST_CASE("MeshNodeBoundary", "[mesh]")
                                                 "XMINYMINZMIN", "XMINYMINZMAX", "XMINYMAXZMIN", "XMINYMAXZMAX",
                                                 "XMAXYMINZMIN", "XMAXYMINZMAX", "XMAXYMAXZMIN", "XMAXYMAXZMAX"};
 
-        for (auto name : name_set) {
+        for (const auto& name : name_set) {
           NamedBoundaryDescriptor numbered_boundary_descriptor(name);
           const auto& node_boundary = getMeshNodeBoundary(mesh, numbered_boundary_descriptor);
 
@@ -267,7 +267,7 @@ TEST_CASE("MeshNodeBoundary", "[mesh]")
                                                 "XMINYMINZMIN", "XMINYMINZMAX", "XMINYMAXZMIN", "XMINYMAXZMAX",
                                                 "XMAXYMINZMIN", "XMAXYMINZMAX", "XMAXYMAXZMIN", "XMAXYMAXZMAX"};
 
-        for (auto name : name_set) {
+        for (const auto& name : name_set) {
           NamedBoundaryDescriptor numbered_boundary_descriptor(name);
           const auto& node_boundary = getMeshNodeBoundary(mesh, numbered_boundary_descriptor);
 
diff --git a/tests/test_SubItemArrayPerItem.cpp b/tests/test_SubItemArrayPerItem.cpp
index aa8930269..ec4e06e0c 100644
--- a/tests/test_SubItemArrayPerItem.cpp
+++ b/tests/test_SubItemArrayPerItem.cpp
@@ -66,7 +66,7 @@ TEST_CASE("SubItemArrayPerItem", "[mesh]")
     {
       std::array mesh_list = MeshDataBaseForTests::get().all1DMeshes();
 
-      for (auto named_mesh : mesh_list) {
+      for (const auto& named_mesh : mesh_list) {
         SECTION(named_mesh.name())
         {
           auto mesh_1d = named_mesh.mesh();
@@ -189,7 +189,7 @@ TEST_CASE("SubItemArrayPerItem", "[mesh]")
     {
       std::array mesh_list = MeshDataBaseForTests::get().all2DMeshes();
 
-      for (auto named_mesh : mesh_list) {
+      for (const auto& named_mesh : mesh_list) {
         SECTION(named_mesh.name())
         {
           auto mesh_2d = named_mesh.mesh();
@@ -355,7 +355,7 @@ TEST_CASE("SubItemArrayPerItem", "[mesh]")
     {
       std::array mesh_list = MeshDataBaseForTests::get().all3DMeshes();
 
-      for (auto named_mesh : mesh_list) {
+      for (const auto& named_mesh : mesh_list) {
         SECTION(named_mesh.name())
         {
           auto mesh_3d = named_mesh.mesh();
@@ -552,7 +552,7 @@ TEST_CASE("SubItemArrayPerItem", "[mesh]")
     {
       std::array mesh_list = MeshDataBaseForTests::get().all1DMeshes();
 
-      for (auto named_mesh : mesh_list) {
+      for (const auto& named_mesh : mesh_list) {
         SECTION(named_mesh.name())
         {
           auto mesh_1d = named_mesh.mesh();
@@ -625,7 +625,7 @@ TEST_CASE("SubItemArrayPerItem", "[mesh]")
     {
       std::array mesh_list = MeshDataBaseForTests::get().all2DMeshes();
 
-      for (auto named_mesh : mesh_list) {
+      for (const auto& named_mesh : mesh_list) {
         SECTION(named_mesh.name())
         {
           auto mesh_2d = named_mesh.mesh();
@@ -697,7 +697,7 @@ TEST_CASE("SubItemArrayPerItem", "[mesh]")
     {
       std::array mesh_list = MeshDataBaseForTests::get().all3DMeshes();
 
-      for (auto named_mesh : mesh_list) {
+      for (const auto& named_mesh : mesh_list) {
         SECTION(named_mesh.name())
         {
           auto mesh_3d = named_mesh.mesh();
@@ -769,7 +769,7 @@ TEST_CASE("SubItemArrayPerItem", "[mesh]")
   {
     std::array mesh_list = MeshDataBaseForTests::get().all3DMeshes();
 
-    for (auto named_mesh : mesh_list) {
+    for (const auto& named_mesh : mesh_list) {
       SECTION(named_mesh.name())
       {
         auto mesh_3d = named_mesh.mesh();
@@ -880,7 +880,7 @@ TEST_CASE("SubItemArrayPerItem", "[mesh]")
   {
     std::array mesh_list = MeshDataBaseForTests::get().all3DMeshes();
 
-    for (auto named_mesh : mesh_list) {
+    for (const auto& named_mesh : mesh_list) {
       SECTION(named_mesh.name())
       {
         auto mesh_3d = named_mesh.mesh();
@@ -991,7 +991,7 @@ TEST_CASE("SubItemArrayPerItem", "[mesh]")
   {
     std::array mesh_list = MeshDataBaseForTests::get().all2DMeshes();
 
-    for (auto named_mesh : mesh_list) {
+    for (const auto& named_mesh : mesh_list) {
       SECTION(named_mesh.name())
       {
         auto mesh_2d = named_mesh.mesh();
@@ -1087,7 +1087,7 @@ TEST_CASE("SubItemArrayPerItem", "[mesh]")
     {
       std::array mesh_list = MeshDataBaseForTests::get().all3DMeshes();
 
-      for (auto named_mesh : mesh_list) {
+      for (const auto& named_mesh : mesh_list) {
         SECTION(named_mesh.name())
         {
           auto mesh_3d = named_mesh.mesh();
diff --git a/tests/test_SubItemArrayPerItemUtils.cpp b/tests/test_SubItemArrayPerItemUtils.cpp
index d3f29a381..e534ec346 100644
--- a/tests/test_SubItemArrayPerItemUtils.cpp
+++ b/tests/test_SubItemArrayPerItemUtils.cpp
@@ -18,7 +18,7 @@ TEST_CASE("SubItemArrayPerItemUtils", "[mesh]")
   {
     std::array mesh_list = MeshDataBaseForTests::get().all2DMeshes();
 
-    for (auto named_mesh : mesh_list) {
+    for (const auto& named_mesh : mesh_list) {
       SECTION(named_mesh.name())
       {
         auto mesh_2d = named_mesh.mesh();
@@ -90,7 +90,7 @@ TEST_CASE("SubItemArrayPerItemUtils", "[mesh]")
     {
       std::array mesh_list = MeshDataBaseForTests::get().all1DMeshes();
 
-      for (auto named_mesh : mesh_list) {
+      for (const auto& named_mesh : mesh_list) {
         SECTION(named_mesh.name())
         {
           auto mesh_1d = named_mesh.mesh();
@@ -122,7 +122,7 @@ TEST_CASE("SubItemArrayPerItemUtils", "[mesh]")
     {
       std::array mesh_list = MeshDataBaseForTests::get().all2DMeshes();
 
-      for (auto named_mesh : mesh_list) {
+      for (const auto& named_mesh : mesh_list) {
         SECTION(named_mesh.name())
         {
           auto mesh_2d = named_mesh.mesh();
@@ -154,7 +154,7 @@ TEST_CASE("SubItemArrayPerItemUtils", "[mesh]")
     {
       std::array mesh_list = MeshDataBaseForTests::get().all3DMeshes();
 
-      for (auto named_mesh : mesh_list) {
+      for (const auto& named_mesh : mesh_list) {
         SECTION(named_mesh.name())
         {
           auto mesh_3d = named_mesh.mesh();
@@ -189,7 +189,7 @@ TEST_CASE("SubItemArrayPerItemUtils", "[mesh]")
     {
       std::array mesh_list = MeshDataBaseForTests::get().all1DMeshes();
 
-      for (auto named_mesh : mesh_list) {
+      for (const auto& named_mesh : mesh_list) {
         SECTION(named_mesh.name())
         {
           auto mesh_1d = named_mesh.mesh();
@@ -221,7 +221,7 @@ TEST_CASE("SubItemArrayPerItemUtils", "[mesh]")
     {
       std::array mesh_list = MeshDataBaseForTests::get().all2DMeshes();
 
-      for (auto named_mesh : mesh_list) {
+      for (const auto& named_mesh : mesh_list) {
         SECTION(named_mesh.name())
         {
           auto mesh_2d = named_mesh.mesh();
@@ -253,7 +253,7 @@ TEST_CASE("SubItemArrayPerItemUtils", "[mesh]")
     {
       std::array mesh_list = MeshDataBaseForTests::get().all3DMeshes();
 
-      for (auto named_mesh : mesh_list) {
+      for (const auto& named_mesh : mesh_list) {
         SECTION(named_mesh.name())
         {
           auto mesh_3d = named_mesh.mesh();
@@ -289,7 +289,7 @@ TEST_CASE("SubItemArrayPerItemUtils", "[mesh]")
     {
       std::array mesh_list = MeshDataBaseForTests::get().all1DMeshes();
 
-      for (auto named_mesh : mesh_list) {
+      for (const auto& named_mesh : mesh_list) {
         SECTION(named_mesh.name())
         {
           auto mesh_1d = named_mesh.mesh();
@@ -319,7 +319,7 @@ TEST_CASE("SubItemArrayPerItemUtils", "[mesh]")
     {
       std::array mesh_list = MeshDataBaseForTests::get().all2DMeshes();
 
-      for (auto named_mesh : mesh_list) {
+      for (const auto& named_mesh : mesh_list) {
         SECTION(named_mesh.name() + " for size_t data")
         {
           auto mesh_2d = named_mesh.mesh();
@@ -375,7 +375,7 @@ TEST_CASE("SubItemArrayPerItemUtils", "[mesh]")
     {
       std::array mesh_list = MeshDataBaseForTests::get().all3DMeshes();
 
-      for (auto named_mesh : mesh_list) {
+      for (const auto& named_mesh : mesh_list) {
         SECTION(named_mesh.name() + " for size_t data")
         {
           auto mesh_3d = named_mesh.mesh();
diff --git a/tests/test_SubItemValuePerItem.cpp b/tests/test_SubItemValuePerItem.cpp
index 65741d700..349de7250 100644
--- a/tests/test_SubItemValuePerItem.cpp
+++ b/tests/test_SubItemValuePerItem.cpp
@@ -76,7 +76,7 @@ TEST_CASE("SubItemValuePerItem", "[mesh]")
     {
       std::array mesh_list = MeshDataBaseForTests::get().all1DMeshes();
 
-      for (auto named_mesh : mesh_list) {
+      for (const auto& named_mesh : mesh_list) {
         SECTION(named_mesh.name())
         {
           auto mesh_1d = named_mesh.mesh();
@@ -212,7 +212,7 @@ TEST_CASE("SubItemValuePerItem", "[mesh]")
     {
       std::array mesh_list = MeshDataBaseForTests::get().all2DMeshes();
 
-      for (auto named_mesh : mesh_list) {
+      for (const auto& named_mesh : mesh_list) {
         SECTION(named_mesh.name())
         {
           auto mesh_2d = named_mesh.mesh();
@@ -388,7 +388,7 @@ TEST_CASE("SubItemValuePerItem", "[mesh]")
     {
       std::array mesh_list = MeshDataBaseForTests::get().all3DMeshes();
 
-      for (auto named_mesh : mesh_list) {
+      for (const auto& named_mesh : mesh_list) {
         SECTION(named_mesh.name())
         {
           auto mesh_3d = named_mesh.mesh();
@@ -593,7 +593,7 @@ TEST_CASE("SubItemValuePerItem", "[mesh]")
     {
       std::array mesh_list = MeshDataBaseForTests::get().all1DMeshes();
 
-      for (auto named_mesh : mesh_list) {
+      for (const auto& named_mesh : mesh_list) {
         SECTION(named_mesh.name())
         {
           auto mesh_1d = named_mesh.mesh();
@@ -709,7 +709,7 @@ TEST_CASE("SubItemValuePerItem", "[mesh]")
     {
       std::array mesh_list = MeshDataBaseForTests::get().all2DMeshes();
 
-      for (auto named_mesh : mesh_list) {
+      for (const auto& named_mesh : mesh_list) {
         SECTION(named_mesh.name())
         {
           auto mesh_2d = named_mesh.mesh();
@@ -895,7 +895,7 @@ TEST_CASE("SubItemValuePerItem", "[mesh]")
     {
       std::array mesh_list = MeshDataBaseForTests::get().all3DMeshes();
 
-      for (auto named_mesh : mesh_list) {
+      for (const auto& named_mesh : mesh_list) {
         SECTION(named_mesh.name())
         {
           auto mesh_3d = named_mesh.mesh();
@@ -1116,7 +1116,7 @@ TEST_CASE("SubItemValuePerItem", "[mesh]")
     {
       std::array mesh_list = MeshDataBaseForTests::get().all1DMeshes();
 
-      for (auto named_mesh : mesh_list) {
+      for (const auto& named_mesh : mesh_list) {
         SECTION(named_mesh.name())
         {
           auto mesh_1d = named_mesh.mesh();
@@ -1161,7 +1161,7 @@ TEST_CASE("SubItemValuePerItem", "[mesh]")
     {
       std::array mesh_list = MeshDataBaseForTests::get().all2DMeshes();
 
-      for (auto named_mesh : mesh_list) {
+      for (const auto& named_mesh : mesh_list) {
         SECTION(named_mesh.name())
         {
           auto mesh_2d = named_mesh.mesh();
@@ -1205,7 +1205,7 @@ TEST_CASE("SubItemValuePerItem", "[mesh]")
     {
       std::array mesh_list = MeshDataBaseForTests::get().all3DMeshes();
 
-      for (auto named_mesh : mesh_list) {
+      for (const auto& named_mesh : mesh_list) {
         SECTION(named_mesh.name())
         {
           auto mesh_3d = named_mesh.mesh();
@@ -1251,7 +1251,7 @@ TEST_CASE("SubItemValuePerItem", "[mesh]")
   {
     std::array mesh_list = MeshDataBaseForTests::get().all3DMeshes();
 
-    for (auto named_mesh : mesh_list) {
+    for (const auto& named_mesh : mesh_list) {
       SECTION(named_mesh.name())
       {
         auto mesh_3d = named_mesh.mesh();
@@ -1350,7 +1350,7 @@ TEST_CASE("SubItemValuePerItem", "[mesh]")
   {
     std::array mesh_list = MeshDataBaseForTests::get().all2DMeshes();
 
-    for (auto named_mesh : mesh_list) {
+    for (const auto& named_mesh : mesh_list) {
       SECTION(named_mesh.name())
       {
         auto mesh_2d = named_mesh.mesh();
@@ -1439,7 +1439,7 @@ TEST_CASE("SubItemValuePerItem", "[mesh]")
     {
       std::array mesh_list = MeshDataBaseForTests::get().all3DMeshes();
 
-      for (auto named_mesh : mesh_list) {
+      for (const auto& named_mesh : mesh_list) {
         SECTION(named_mesh.name())
         {
           auto mesh_3d = named_mesh.mesh();
diff --git a/tests/test_SubItemValuePerItemUtils.cpp b/tests/test_SubItemValuePerItemUtils.cpp
index ccda4722d..aca9a1449 100644
--- a/tests/test_SubItemValuePerItemUtils.cpp
+++ b/tests/test_SubItemValuePerItemUtils.cpp
@@ -18,7 +18,7 @@ TEST_CASE("SubItemValuePerItemUtils", "[mesh]")
   {
     std::array mesh_list = MeshDataBaseForTests::get().all2DMeshes();
 
-    for (auto named_mesh : mesh_list) {
+    for (const auto& named_mesh : mesh_list) {
       SECTION(named_mesh.name())
       {
         auto mesh_2d = named_mesh.mesh();
@@ -85,7 +85,7 @@ TEST_CASE("SubItemValuePerItemUtils", "[mesh]")
     {
       std::array mesh_list = MeshDataBaseForTests::get().all1DMeshes();
 
-      for (auto named_mesh : mesh_list) {
+      for (const auto& named_mesh : mesh_list) {
         SECTION(named_mesh.name())
         {
           auto mesh_1d = named_mesh.mesh();
@@ -115,7 +115,7 @@ TEST_CASE("SubItemValuePerItemUtils", "[mesh]")
     {
       std::array mesh_list = MeshDataBaseForTests::get().all2DMeshes();
 
-      for (auto named_mesh : mesh_list) {
+      for (const auto& named_mesh : mesh_list) {
         SECTION(named_mesh.name())
         {
           auto mesh_2d = named_mesh.mesh();
@@ -145,7 +145,7 @@ TEST_CASE("SubItemValuePerItemUtils", "[mesh]")
     {
       std::array mesh_list = MeshDataBaseForTests::get().all3DMeshes();
 
-      for (auto named_mesh : mesh_list) {
+      for (const auto& named_mesh : mesh_list) {
         SECTION(named_mesh.name())
         {
           auto mesh_3d = named_mesh.mesh();
@@ -178,7 +178,7 @@ TEST_CASE("SubItemValuePerItemUtils", "[mesh]")
     {
       std::array mesh_list = MeshDataBaseForTests::get().all1DMeshes();
 
-      for (auto named_mesh : mesh_list) {
+      for (const auto& named_mesh : mesh_list) {
         SECTION(named_mesh.name())
         {
           auto mesh_1d = named_mesh.mesh();
@@ -208,7 +208,7 @@ TEST_CASE("SubItemValuePerItemUtils", "[mesh]")
     {
       std::array mesh_list = MeshDataBaseForTests::get().all2DMeshes();
 
-      for (auto named_mesh : mesh_list) {
+      for (const auto& named_mesh : mesh_list) {
         SECTION(named_mesh.name())
         {
           auto mesh_2d = named_mesh.mesh();
@@ -238,7 +238,7 @@ TEST_CASE("SubItemValuePerItemUtils", "[mesh]")
     {
       std::array mesh_list = MeshDataBaseForTests::get().all3DMeshes();
 
-      for (auto named_mesh : mesh_list) {
+      for (const auto& named_mesh : mesh_list) {
         SECTION(named_mesh.name())
         {
           auto mesh_3d = named_mesh.mesh();
@@ -273,7 +273,7 @@ TEST_CASE("SubItemValuePerItemUtils", "[mesh]")
     {
       std::array mesh_list = MeshDataBaseForTests::get().all1DMeshes();
 
-      for (auto named_mesh : mesh_list) {
+      for (const auto& named_mesh : mesh_list) {
         SECTION(named_mesh.name())
         {
           auto mesh_1d = named_mesh.mesh();
@@ -302,7 +302,7 @@ TEST_CASE("SubItemValuePerItemUtils", "[mesh]")
     {
       std::array mesh_list = MeshDataBaseForTests::get().all2DMeshes();
 
-      for (auto named_mesh : mesh_list) {
+      for (const auto& named_mesh : mesh_list) {
         SECTION(named_mesh.name() + " for size_t data")
         {
           auto mesh_2d = named_mesh.mesh();
@@ -356,7 +356,7 @@ TEST_CASE("SubItemValuePerItemUtils", "[mesh]")
     {
       std::array mesh_list = MeshDataBaseForTests::get().all3DMeshes();
 
-      for (auto named_mesh : mesh_list) {
+      for (const auto& named_mesh : mesh_list) {
         SECTION(named_mesh.name() + " for size_t data")
         {
           auto mesh_3d = named_mesh.mesh();
-- 
GitLab