diff --git a/NumLib/ODESolver/TimeDiscretizedODESystem.cpp b/NumLib/ODESolver/TimeDiscretizedODESystem.cpp
index 227a044611b895a7a050561f96a62dbbbd010c0e..fb0d2ed7ced9adcadf4667d1732050ae1b3c6df8 100644
--- a/NumLib/ODESolver/TimeDiscretizedODESystem.cpp
+++ b/NumLib/ODESolver/TimeDiscretizedODESystem.cpp
@@ -177,7 +177,7 @@ void TimeDiscretizedODESystem<ODESystemTag::FirstOrderImplicitQuasilinear,
     std::vector<IndexType> ids;
     for (auto const& bc : *_known_solutions)
     {
-        std::copy(bc.ids.cbegin(), bc.ids.cend(), std::back_inserter(ids));
+        ids.insert(end(ids), begin(bc.ids), end(bc.ids));
     }
 
     // For the Newton method the values must be zero
@@ -280,9 +280,8 @@ void TimeDiscretizedODESystem<ODESystemTag::FirstOrderImplicitQuasilinear,
     std::vector<double> values;
     for (auto const& bc : *_known_solutions)
     {
-        std::copy(bc.ids.cbegin(), bc.ids.cend(), std::back_inserter(ids));
-        std::copy(bc.values.cbegin(), bc.values.cend(),
-                  std::back_inserter(values));
+        ids.insert(end(ids), begin(bc.ids), end(bc.ids));
+        values.insert(end(values), begin(bc.values), end(bc.values));
     }
     MathLib::applyKnownSolution(A, rhs, x, ids, values);
 }