diff --git a/include/aidge/operator/Cast.hpp b/include/aidge/operator/Cast.hpp
index f003e30c30ce8bfa7a33d65b75bb83fc8ec17d93..f63bde83b1450582d521b7a385853c0f5d3677b9 100644
--- a/include/aidge/operator/Cast.hpp
+++ b/include/aidge/operator/Cast.hpp
@@ -112,6 +112,12 @@ public:
         }
     }
 
+    /**
+     * @brief Forward the data type.
+     * @return True if successful, false otherwise.
+     */
+    bool forwardDType() override final;
+
     /**
      * @brief Clone the operator using its copy constructor.
      * @return A shared pointer to the cloned operator.
diff --git a/src/operator/Cast.cpp b/src/operator/Cast.cpp
index 54eef17b67b320ef244881cee44ed8cabaa9bf47..001a20a5356b76abfaa26d16c880ee1f6af2c117 100644
--- a/src/operator/Cast.cpp
+++ b/src/operator/Cast.cpp
@@ -36,6 +36,10 @@ Aidge::Cast_Op::Cast_Op(const DataType targetType)
     mOutputs[0]->setDataType(targetType);
 }
 
+bool Aidge::Cast_Op::forwardDType(){
+    mOutputs[0]->setDataType(mAttributes->getAttr<CastAttr::TargetType>());
+    return true;
+}
 
 void Aidge::Cast_Op::setBackend(const std::string& name, Aidge::DeviceIdx_t device) {
     if (Registrar<Cast_Op>::exists({name})) {