diff --git a/MaterialLib/SolidModels/CreepBGRa.cpp b/MaterialLib/SolidModels/CreepBGRa.cpp
index 2443ddcfe582741bdec7d00414f0b7d98b4910a3..0d309746ee45d63ff0d406355ffa4d2afbfbb5e1 100644
--- a/MaterialLib/SolidModels/CreepBGRa.cpp
+++ b/MaterialLib/SolidModels/CreepBGRa.cpp
@@ -29,10 +29,10 @@ double getCreepConstantCoefficient(const double A, const double n,
 }
 
 template <int DisplacementDim>
-boost::optional<std::tuple<typename CreepBGRa<DisplacementDim>::KelvinVector,
-                           std::unique_ptr<typename MechanicsBase<
-                               DisplacementDim>::MaterialStateVariables>,
-                           typename CreepBGRa<DisplacementDim>::KelvinMatrix>>
+std::optional<std::tuple<typename CreepBGRa<DisplacementDim>::KelvinVector,
+                         std::unique_ptr<typename MechanicsBase<
+                             DisplacementDim>::MaterialStateVariables>,
+                         typename CreepBGRa<DisplacementDim>::KelvinMatrix>>
 CreepBGRa<DisplacementDim>::integrateStress(
     double const t, ParameterLib::SpatialPosition const& x, double const dt,
     KelvinVector const& eps_prev, KelvinVector const& eps,
diff --git a/MaterialLib/SolidModels/CreepBGRa.h b/MaterialLib/SolidModels/CreepBGRa.h
index a2f5a9767af6df2f82b4368948a179cd568d4efc..7dcbb8b3c0089337adee6c0fce7c9b7c9dd1526a 100644
--- a/MaterialLib/SolidModels/CreepBGRa.h
+++ b/MaterialLib/SolidModels/CreepBGRa.h
@@ -73,10 +73,10 @@ public:
     {
     }
 
-    boost::optional<std::tuple<KelvinVector,
-                               std::unique_ptr<typename MechanicsBase<
-                                   DisplacementDim>::MaterialStateVariables>,
-                               KelvinMatrix>>
+    std::optional<std::tuple<KelvinVector,
+                             std::unique_ptr<typename MechanicsBase<
+                                 DisplacementDim>::MaterialStateVariables>,
+                             KelvinMatrix>>
     integrateStress(
         double const t, ParameterLib::SpatialPosition const& x, double const dt,
         KelvinVector const& eps_prev, KelvinVector const& eps,
diff --git a/MaterialLib/SolidModels/Ehlers.cpp b/MaterialLib/SolidModels/Ehlers.cpp
index 89951196bc08114ac82bc3bfd2115a67c14b0192..ca0e5873ceb4163c8a5e32f2fdfe0343516cce91 100644
--- a/MaterialLib/SolidModels/Ehlers.cpp
+++ b/MaterialLib/SolidModels/Ehlers.cpp
@@ -502,10 +502,10 @@ double SolidEhlers<DisplacementDim>::computeFreeEnergyDensity(
 }
 
 template <int DisplacementDim>
-boost::optional<std::tuple<typename SolidEhlers<DisplacementDim>::KelvinVector,
-                           std::unique_ptr<typename MechanicsBase<
-                               DisplacementDim>::MaterialStateVariables>,
-                           typename SolidEhlers<DisplacementDim>::KelvinMatrix>>
+std::optional<std::tuple<typename SolidEhlers<DisplacementDim>::KelvinVector,
+                         std::unique_ptr<typename MechanicsBase<
+                             DisplacementDim>::MaterialStateVariables>,
+                         typename SolidEhlers<DisplacementDim>::KelvinMatrix>>
 SolidEhlers<DisplacementDim>::integrateStress(
     double const t, ParameterLib::SpatialPosition const& x, double const dt,
     KelvinVector const& eps_prev, KelvinVector const& eps,
diff --git a/MaterialLib/SolidModels/Ehlers.h b/MaterialLib/SolidModels/Ehlers.h
index 801c5b14927d32f027ecf6ea68f2445d3274e09c..772cdd9addf2c221ba12672545b4878673fb039f 100644
--- a/MaterialLib/SolidModels/Ehlers.h
+++ b/MaterialLib/SolidModels/Ehlers.h
@@ -309,7 +309,7 @@ public:
         typename MechanicsBase<DisplacementDim>::MaterialStateVariables const&
             material_state_variables) const override;
 
-    boost::optional<std::tuple<KelvinVector,
+    std::optional<std::tuple<KelvinVector,
                                std::unique_ptr<typename MechanicsBase<
                                    DisplacementDim>::MaterialStateVariables>,
                                KelvinMatrix>>
diff --git a/MaterialLib/SolidModels/LinearElasticIsotropic.cpp b/MaterialLib/SolidModels/LinearElasticIsotropic.cpp
index 29c3748c0fa18bf1d7c813844ba9386a4e0a2e91..56afd3e4b076837f75a36a2abae5f0cf2f78b007 100644
--- a/MaterialLib/SolidModels/LinearElasticIsotropic.cpp
+++ b/MaterialLib/SolidModels/LinearElasticIsotropic.cpp
@@ -14,11 +14,10 @@ namespace MaterialLib
 namespace Solids
 {
 template <int DisplacementDim>
-boost::optional<
-    std::tuple<typename MechanicsBase<DisplacementDim>::KelvinVector,
-               std::unique_ptr<typename MechanicsBase<
-                   DisplacementDim>::MaterialStateVariables>,
-               typename MechanicsBase<DisplacementDim>::KelvinMatrix>>
+std::optional<std::tuple<typename MechanicsBase<DisplacementDim>::KelvinVector,
+                         std::unique_ptr<typename MechanicsBase<
+                             DisplacementDim>::MaterialStateVariables>,
+                         typename MechanicsBase<DisplacementDim>::KelvinMatrix>>
 LinearElasticIsotropic<DisplacementDim>::integrateStress(
     double const t, ParameterLib::SpatialPosition const& x, double const /*dt*/,
     KelvinVector const& eps_prev, KelvinVector const& eps,
diff --git a/MaterialLib/SolidModels/LinearElasticIsotropic.h b/MaterialLib/SolidModels/LinearElasticIsotropic.h
index adb693226defb7915fd7d2a7b5dc4bc384d4b60d..4b12e18c78e5b8a9d9f85580cc887e7f04a564ed 100644
--- a/MaterialLib/SolidModels/LinearElasticIsotropic.h
+++ b/MaterialLib/SolidModels/LinearElasticIsotropic.h
@@ -85,7 +85,7 @@ public:
         return eps.dot(sigma) / 2;
     }
 
-    boost::optional<
+    std::optional<
         std::tuple<typename MechanicsBase<DisplacementDim>::KelvinVector,
                    std::unique_ptr<typename MechanicsBase<
                        DisplacementDim>::MaterialStateVariables>,
diff --git a/MaterialLib/SolidModels/LinearElasticOrthotropic.cpp b/MaterialLib/SolidModels/LinearElasticOrthotropic.cpp
index cb3c54c413125db22868ed4805055df9d655c021..a44e6ae2a39be0f0b868592efde1271117cbce34 100644
--- a/MaterialLib/SolidModels/LinearElasticOrthotropic.cpp
+++ b/MaterialLib/SolidModels/LinearElasticOrthotropic.cpp
@@ -16,7 +16,7 @@ namespace MaterialLib
 namespace Solids
 {
 template <int DisplacementDim>
-boost::optional<
+std::optional<
     std::tuple<typename MechanicsBase<DisplacementDim>::KelvinVector,
                std::unique_ptr<typename MechanicsBase<
                    DisplacementDim>::MaterialStateVariables>,
diff --git a/MaterialLib/SolidModels/LinearElasticOrthotropic.h b/MaterialLib/SolidModels/LinearElasticOrthotropic.h
index ec06f133362628ee0a1e616898337177c43838c1..812d10b6ebfc3a4fc6bb55366e9a3a8705f6f76c 100644
--- a/MaterialLib/SolidModels/LinearElasticOrthotropic.h
+++ b/MaterialLib/SolidModels/LinearElasticOrthotropic.h
@@ -152,7 +152,7 @@ public:
         return eps.dot(sigma) / 2;
     }
 
-    boost::optional<
+    std::optional<
         std::tuple<typename MechanicsBase<DisplacementDim>::KelvinVector,
                    std::unique_ptr<typename MechanicsBase<
                        DisplacementDim>::MaterialStateVariables>,
diff --git a/MaterialLib/SolidModels/Lubby2.cpp b/MaterialLib/SolidModels/Lubby2.cpp
index 68a33b4e0c356fc8ef1c52b4ed5ea3aa589aff1a..ffdc97bfa8b1ba12921ab68b3b4e529bdf349c8a 100644
--- a/MaterialLib/SolidModels/Lubby2.cpp
+++ b/MaterialLib/SolidModels/Lubby2.cpp
@@ -67,10 +67,10 @@ MathLib::KelvinVector::KelvinMatrixType<DisplacementDim> tangentStiffnessA(
 };
 
 template <int DisplacementDim>
-boost::optional<std::tuple<typename Lubby2<DisplacementDim>::KelvinVector,
-                           std::unique_ptr<typename MechanicsBase<
-                               DisplacementDim>::MaterialStateVariables>,
-                           typename Lubby2<DisplacementDim>::KelvinMatrix>>
+std::optional<std::tuple<typename Lubby2<DisplacementDim>::KelvinVector,
+                         std::unique_ptr<typename MechanicsBase<
+                             DisplacementDim>::MaterialStateVariables>,
+                         typename Lubby2<DisplacementDim>::KelvinMatrix>>
 Lubby2<DisplacementDim>::integrateStress(
     double const t, ParameterLib::SpatialPosition const& x, double const dt,
     KelvinVector const& eps_prev, KelvinVector const& eps,
diff --git a/MaterialLib/SolidModels/Lubby2.h b/MaterialLib/SolidModels/Lubby2.h
index c9a74fc5fb32d9a6dabbded9d00b3304dc4c89b1..65cc281663ea37ea273f073762632d0bed8f86db 100644
--- a/MaterialLib/SolidModels/Lubby2.h
+++ b/MaterialLib/SolidModels/Lubby2.h
@@ -229,10 +229,10 @@ public:
                eps_K.dot(sigma - eta_K * (eps_K - eps_K_prev) / dt) / 2;
     }
 
-    boost::optional<std::tuple<KelvinVector,
-                               std::unique_ptr<typename MechanicsBase<
-                                   DisplacementDim>::MaterialStateVariables>,
-                               KelvinMatrix>>
+    std::optional<std::tuple<KelvinVector,
+                             std::unique_ptr<typename MechanicsBase<
+                                 DisplacementDim>::MaterialStateVariables>,
+                             KelvinMatrix>>
     integrateStress(
         double const t, ParameterLib::SpatialPosition const& x, double const dt,
         KelvinVector const& eps_prev, KelvinVector const& eps,
diff --git a/MaterialLib/SolidModels/MFront/MFront.cpp b/MaterialLib/SolidModels/MFront/MFront.cpp
index b80e6fa879d9c6550ebea93f5f59ea0ed7739c2c..f74b48a5957231208d038849b63268fbf5ca5a25 100644
--- a/MaterialLib/SolidModels/MFront/MFront.cpp
+++ b/MaterialLib/SolidModels/MFront/MFront.cpp
@@ -246,10 +246,10 @@ MFront<DisplacementDim>::createMaterialStateVariables() const
 }
 
 template <int DisplacementDim>
-boost::optional<std::tuple<typename MFront<DisplacementDim>::KelvinVector,
-                           std::unique_ptr<typename MechanicsBase<
-                               DisplacementDim>::MaterialStateVariables>,
-                           typename MFront<DisplacementDim>::KelvinMatrix>>
+std::optional<std::tuple<typename MFront<DisplacementDim>::KelvinVector,
+                         std::unique_ptr<typename MechanicsBase<
+                             DisplacementDim>::MaterialStateVariables>,
+                         typename MFront<DisplacementDim>::KelvinMatrix>>
 MFront<DisplacementDim>::integrateStress(
     double const t,
     ParameterLib::SpatialPosition const& x,
@@ -335,14 +335,12 @@ MFront<DisplacementDim>::integrateStress(
     KelvinMatrix C =
         MFrontToOGS(Eigen::Map<KelvinMatrix>(behaviour_data.K.data()));
 
-    return boost::make_optional(
+    return std::make_optional(
         std::make_tuple<typename MFront<DisplacementDim>::KelvinVector,
                         std::unique_ptr<typename MechanicsBase<
                             DisplacementDim>::MaterialStateVariables>,
                         typename MFront<DisplacementDim>::KelvinMatrix>(
-            std::move(sigma),
-            std::move(state),
-            std::move(C)));
+            std::move(sigma), std::move(state), std::move(C)));
 }
 
 template <int DisplacementDim>
diff --git a/MaterialLib/SolidModels/MFront/MFront.h b/MaterialLib/SolidModels/MFront/MFront.h
index d57ef00d6406900c8e908313f01567c39db2810c..d2b3a6487b4494cbb95d524c9c2bbefe1c1c7264 100644
--- a/MaterialLib/SolidModels/MFront/MFront.h
+++ b/MaterialLib/SolidModels/MFront/MFront.h
@@ -72,10 +72,10 @@ public:
         typename MechanicsBase<DisplacementDim>::MaterialStateVariables>
     createMaterialStateVariables() const override;
 
-    boost::optional<std::tuple<KelvinVector,
-                               std::unique_ptr<typename MechanicsBase<
-                                   DisplacementDim>::MaterialStateVariables>,
-                               KelvinMatrix>>
+    std::optional<std::tuple<KelvinVector,
+                             std::unique_ptr<typename MechanicsBase<
+                                 DisplacementDim>::MaterialStateVariables>,
+                             KelvinMatrix>>
     integrateStress(
         double const t,
         ParameterLib::SpatialPosition const& x,
diff --git a/MaterialLib/SolidModels/MechanicsBase.h b/MaterialLib/SolidModels/MechanicsBase.h
index 61497d560c163872ed44ee7b409b64f058d0f67e..5a79df80b30d176fd87d3c9d0bc8bd591536a379 100644
--- a/MaterialLib/SolidModels/MechanicsBase.h
+++ b/MaterialLib/SolidModels/MechanicsBase.h
@@ -9,7 +9,7 @@
 
 #pragma once
 
-#include <boost/optional.hpp>
+#include <optional>
 #include <functional>
 #include <memory>
 #include <tuple>
@@ -77,7 +77,7 @@ struct MechanicsBase
     /// constitutive relation compute function.
     /// Returns nothing in case of errors in the computation if Newton
     /// iterations did not converge, for example.
-    boost::optional<std::tuple<
+    std::optional<std::tuple<
         KelvinVector, std::unique_ptr<MaterialStateVariables>, KelvinMatrix>>
     integrateStress(double const t,
                     ParameterLib::SpatialPosition const& x,
@@ -108,7 +108,7 @@ struct MechanicsBase
     /// wrapper function.
     /// Returns nothing in case of errors in the computation if Newton
     /// iterations did not converge, for example.
-    virtual boost::optional<std::tuple<
+    virtual std::optional<std::tuple<
         KelvinVector, std::unique_ptr<MaterialStateVariables>, KelvinMatrix>>
     integrateStress(double const t,
                     ParameterLib::SpatialPosition const& x,
diff --git a/Tests/MaterialLib/MFront.cpp b/Tests/MaterialLib/MFront.cpp
index 4c92ea5b52a7d83dcf67231b6a0fd2ccec8edd03..e1d545af7ac6e2abc521a37cee58b9b1b2775593 100644
--- a/Tests/MaterialLib/MFront.cpp
+++ b/Tests/MaterialLib/MFront.cpp
@@ -158,7 +158,7 @@ TYPED_TEST(MaterialLib_SolidModelsMFront2, IntegrateZeroDisplacement)
         this->t, this->x, this->dt, this->eps_prev, this->eps, this->sigma_prev,
         *state, this->T);
 
-    ASSERT_TRUE(solution != boost::none);
+    ASSERT_TRUE(solution != std::nullopt);
     state = std::move(std::get<1>(*solution));
     ASSERT_TRUE(state != nullptr);
     state.reset(nullptr);
@@ -174,7 +174,7 @@ TYPED_TEST(MaterialLib_SolidModelsMFront3, IntegrateZeroDisplacement)
         this->t, this->x, this->dt, this->eps_prev, this->eps, this->sigma_prev,
         *state, this->T);
 
-    ASSERT_TRUE(solution != boost::none);
+    ASSERT_TRUE(solution != std::nullopt);
     state = std::move(std::get<1>(*solution));
     ASSERT_TRUE(state != nullptr);
     state.reset(nullptr);