From a01f6c24e4ccdf813e34bbfd94f59189290a6b5c Mon Sep 17 00:00:00 2001
From: Stephane Del Pino <stephane.delpino44@gmail.com>
Date: Fri, 16 Feb 2024 23:50:20 +0100
Subject: [PATCH] Fix compilation if HDF5 is missing and add missing typename

---
 src/mesh/DiamondDualMeshBuilder.cpp  | 2 +-
 src/mesh/MedianDualMeshBuilder.cpp   | 2 +-
 src/mesh/MeshRandomizer.cpp          | 4 ++--
 src/mesh/MeshRelaxer.cpp             | 4 ++--
 src/mesh/MeshTransformer.cpp         | 2 +-
 tests/test_ParallelChecker_read.cpp  | 2 +-
 tests/test_ParallelChecker_write.cpp | 2 +-
 7 files changed, 9 insertions(+), 9 deletions(-)

diff --git a/src/mesh/DiamondDualMeshBuilder.cpp b/src/mesh/DiamondDualMeshBuilder.cpp
index c591ca59a..6b834679a 100644
--- a/src/mesh/DiamondDualMeshBuilder.cpp
+++ b/src/mesh/DiamondDualMeshBuilder.cpp
@@ -45,7 +45,7 @@ DiamondDualMeshBuilder::DiamondDualMeshBuilder(const std::shared_ptr<const MeshV
 {
   std::visit(
     [&](auto&& p_mesh) {
-      using MeshType = std::decay_t<decltype(p_mesh)>::element_type;
+      using MeshType = typename std::decay_t<decltype(p_mesh)>::element_type;
       if constexpr (is_polygonal_mesh<MeshType>) {
         if constexpr (MeshType::Dimension > 1) {
           this->_buildDualDiamondMeshFrom(*p_mesh);
diff --git a/src/mesh/MedianDualMeshBuilder.cpp b/src/mesh/MedianDualMeshBuilder.cpp
index 095c44225..0dd61cfa7 100644
--- a/src/mesh/MedianDualMeshBuilder.cpp
+++ b/src/mesh/MedianDualMeshBuilder.cpp
@@ -46,7 +46,7 @@ MedianDualMeshBuilder::MedianDualMeshBuilder(const std::shared_ptr<const MeshVar
 {
   std::visit(
     [&](auto&& p_mesh) {
-      using MeshType = std::decay_t<decltype(p_mesh)>::element_type;
+      using MeshType = typename std::decay_t<decltype(p_mesh)>::element_type;
       if constexpr (is_polygonal_mesh<MeshType>) {
         if constexpr (MeshType::Dimension > 1) {
           this->_buildMedianDualMeshFrom(*p_mesh);
diff --git a/src/mesh/MeshRandomizer.cpp b/src/mesh/MeshRandomizer.cpp
index 78c397c2e..57b826dff 100644
--- a/src/mesh/MeshRandomizer.cpp
+++ b/src/mesh/MeshRandomizer.cpp
@@ -368,7 +368,7 @@ MeshRandomizerHandler::getRandomizedMesh(
 {
   return std::visit(
     [&](auto&& mesh) {
-      using MeshType = std::decay_t<decltype(mesh)>::element_type;
+      using MeshType = typename std::decay_t<decltype(mesh)>::element_type;
       if constexpr (is_polygonal_mesh<MeshType>) {
         MeshRandomizer randomizer(*mesh, bc_descriptor_list);
         return randomizer.getRandomizedMesh();
@@ -387,7 +387,7 @@ MeshRandomizerHandler::getRandomizedMesh(
 {
   return std::visit(
     [&](auto&& mesh) {
-      using MeshType = std::decay_t<decltype(mesh)>::element_type;
+      using MeshType = typename std::decay_t<decltype(mesh)>::element_type;
       if constexpr (is_polygonal_mesh<MeshType>) {
         MeshRandomizer randomizer(*mesh, bc_descriptor_list);
         return randomizer.getRandomizedMesh(function_symbol_id);
diff --git a/src/mesh/MeshRelaxer.cpp b/src/mesh/MeshRelaxer.cpp
index 4ced5b385..16cbaa3ba 100644
--- a/src/mesh/MeshRelaxer.cpp
+++ b/src/mesh/MeshRelaxer.cpp
@@ -38,8 +38,8 @@ MeshRelaxer::relax(const std::shared_ptr<const MeshVariant>& p_source_mesh,
 {
   return std::visit(
     [&](auto&& source_mesh, auto&& destination_mesh) -> std::shared_ptr<const MeshVariant> {
-      using SourceMeshType      = std::decay_t<decltype(source_mesh)>::element_type;
-      using DestinationMeshType = std::decay_t<decltype(destination_mesh)>::element_type;
+      using SourceMeshType      = typename std::decay_t<decltype(source_mesh)>::element_type;
+      using DestinationMeshType = typename std::decay_t<decltype(destination_mesh)>::element_type;
       if constexpr (std::is_same_v<SourceMeshType, DestinationMeshType>) {
         return this->_relax(*source_mesh, *destination_mesh, theta);
       } else {
diff --git a/src/mesh/MeshTransformer.cpp b/src/mesh/MeshTransformer.cpp
index e524c0b2d..5fc2e3e94 100644
--- a/src/mesh/MeshTransformer.cpp
+++ b/src/mesh/MeshTransformer.cpp
@@ -30,7 +30,7 @@ MeshTransformer::transform(const FunctionSymbolId& function_id, std::shared_ptr<
 {
   return std::visit(
     [&](auto&& mesh) {
-      using MeshType             = std::decay_t<decltype(mesh)>::element_type;
+      using MeshType             = typename std::decay_t<decltype(mesh)>::element_type;
       constexpr size_t Dimension = MeshType::Dimension;
       using TransformT           = TinyVector<Dimension>(TinyVector<Dimension>);
 
diff --git a/tests/test_ParallelChecker_read.cpp b/tests/test_ParallelChecker_read.cpp
index 02fb226b6..b7996db7b 100644
--- a/tests/test_ParallelChecker_read.cpp
+++ b/tests/test_ParallelChecker_read.cpp
@@ -2046,7 +2046,7 @@ TEST_CASE("ParallelChecker_read", "[dev]")
   REQUIRE_NOTHROW(ParallelChecker::instance().setMode(ParallelChecker::Mode::read));
   REQUIRE_NOTHROW(not ParallelChecker::instance().isWriting());
 
-  auto mesh = MeshDataBaseForTests::get().unordered1DMesh();
+  auto mesh = MeshDataBaseForTests::get().unordered1DMesh()->get<Mesh<Connectivity<1>>>();
 
   const Connectivity<1>& connectivity = mesh->connectivity();
 
diff --git a/tests/test_ParallelChecker_write.cpp b/tests/test_ParallelChecker_write.cpp
index 0d08696ad..d9237c7da 100644
--- a/tests/test_ParallelChecker_write.cpp
+++ b/tests/test_ParallelChecker_write.cpp
@@ -620,7 +620,7 @@ TEST_CASE("ParallelChecker_write", "[dev]")
   REQUIRE_NOTHROW(ParallelChecker::instance().setMode(ParallelChecker::Mode::automatic));
   REQUIRE_NOTHROW(ParallelChecker::instance().isWriting() == (parallel::size() == 1));
 
-  auto mesh = MeshDataBaseForTests::get().unordered1DMesh();
+  auto mesh = MeshDataBaseForTests::get().unordered1DMesh()->get<Mesh<Connectivity<1>>>();
 
   const Connectivity<1>& connectivity = mesh->connectivity();
 
-- 
GitLab