diff --git a/include/libcamera/internal/vector.h b/include/libcamera/internal/vector.h
index 0270651a0ef7..0af629e69d56 100644
--- a/include/libcamera/internal/vector.h
+++ b/include/libcamera/internal/vector.h
@@ -120,42 +120,42 @@ public:
 
 	Vector &operator+=(const Vector &other)
 	{
-		return apply([](T a, T b) { return a + b; }, other);
+		return apply(std::plus<>{}, other);
 	}
 
 	Vector &operator+=(T scalar)
 	{
-		return apply([](T a, T b) { return a + b; }, scalar);
+		return apply(std::plus<>{}, scalar);
 	}
 
 	Vector &operator-=(const Vector &other)
 	{
-		return apply([](T a, T b) { return a - b; }, other);
+		return apply(std::minus<>{}, other);
 	}
 
 	Vector &operator-=(T scalar)
 	{
-		return apply([](T a, T b) { return a - b; }, scalar);
+		return apply(std::minus<>{}, scalar);
 	}
 
 	Vector &operator*=(const Vector &other)
 	{
-		return apply([](T a, T b) { return a * b; }, other);
+		return apply(std::multiplies<>{}, other);
 	}
 
 	Vector &operator*=(T scalar)
 	{
-		return apply([](T a, T b) { return a * b; }, scalar);
+		return apply(std::multiplies<>{}, scalar);
 	}
 
 	Vector &operator/=(const Vector &other)
 	{
-		return apply([](T a, T b) { return a / b; }, other);
+		return apply(std::divides<>{}, other);
 	}
 
 	Vector &operator/=(T scalar)
 	{
-		return apply([](T a, T b) { return a / b; }, scalar);
+		return apply(std::divides<>{}, scalar);
 	}
 
 	Vector &operator>>=(unsigned int shift)
