diff --git a/source/RobotAPI/libraries/aron/core/aron_conversions.h b/source/RobotAPI/libraries/aron/core/aron_conversions.h
index 9d067df7ed847624e6a6d07f9ececfe3669ee88d..30f2e949b575e22bf631abc06ca1c4ba8172efaf 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);