From aedd6fdaeafa344b2a17ccdcde4446243b2fd497 Mon Sep 17 00:00:00 2001
From: Patrick Dormanns <patrick.dormanns@student.kit.edu>
Date: Sun, 25 Feb 2024 16:52:00 +0100
Subject: [PATCH] fix template ambiguities

---
 source/RobotAPI/libraries/aron/core/aron_conversions.h | 6 ++++++
 1 file changed, 6 insertions(+)

diff --git a/source/RobotAPI/libraries/aron/core/aron_conversions.h b/source/RobotAPI/libraries/aron/core/aron_conversions.h
index 9d067df7e..30f2e949b 100644
--- a/source/RobotAPI/libraries/aron/core/aron_conversions.h
+++ b/source/RobotAPI/libraries/aron/core/aron_conversions.h
@@ -124,6 +124,7 @@ namespace detail
 
     // std::optional
     template <class DtoT, class BoT>
+    requires (!aron::detail::DtoAndBoAreSame<DtoT, BoT>)
     void toAron(std::optional<DtoT>& dto, const std::optional<BoT>& bo)
     {
         if (bo.has_value())
@@ -138,6 +139,7 @@ namespace detail
     }
 
     template <class DtoT, class BoT>
+    requires (!aron::detail::DtoAndBoAreSame<DtoT, BoT>)
     void fromAron(const std::optional<DtoT>& dto, std::optional<BoT>& bo)
     {
         if (dto.has_value())
@@ -230,6 +232,7 @@ namespace detail
 
     // std::vector
     template <class DtoT, class BoT>
+    requires (!aron::detail::DtoAndBoAreSame<DtoT, BoT>)
     void toAron(std::vector<DtoT>& dtos, const std::vector<BoT>& bos)
     {
         dtos.clear();
@@ -240,6 +243,7 @@ namespace detail
         }
     }
     template <class DtoT, class BoT>
+    requires (!aron::detail::DtoAndBoAreSame<DtoT, BoT>)
     void fromAron(const std::vector<DtoT>& dtos, std::vector<BoT>& bos)
     {
         bos.clear();
@@ -339,11 +343,13 @@ namespace armarx
 
     // std::optional
     template <class DtoT, class BoT>
+    requires (!aron::detail::DtoAndBoAreSame<DtoT, BoT>)
     void toAron(std::optional<DtoT>& dto, const std::optional<BoT>& bo)
     {
         armarx::aron::toAron(dto, bo);
     }
     template <class DtoT, class BoT>
+    requires (!aron::detail::DtoAndBoAreSame<DtoT, BoT>)
     void fromAron(const std::optional<DtoT>& dto, std::optional<BoT>& bo)
     {
         armarx::aron::fromAron(dto, bo);
-- 
GitLab