### 3201. `lerp` should be marked as `noexcept`

**Section:** 28.7.4 [c.math.lerp] **Status:** C++20
**Submitter:** Paolo Torres **Opened:** 2019-04-10 **Last modified:** 2021-02-25 10:48:01 UTC

**Priority: **2

**View all issues with** C++20 status.

**Discussion:**

The overloads of `lerp` should be marked as `noexcept`, and this can be explained through the Lakos Rule.
This function does not specify any undefined behaviour, and as such has no preconditions. This implies it has a wide
contract, meaning it cannot throw, and thus can be marked as `noexcept`.

*[2020-02 Moved to Immediate on Thursday afternoon in Prague.]*

**Proposed resolution:**

This wording is relative to N4810.

Modify 28.7.1 [cmath.syn], header `<cmath>` synopsis, as indicated:

*// 28.7.4 [c.math.lerp], linear interpolation*
constexpr float lerp(float a, float b, float t) noexcept;
constexpr double lerp(double a, double b, double t) noexcept;
constexpr long double lerp(long double a, long double b, long double t) noexcept;

Modify 28.7.4 [c.math.lerp] as indicated:

constexpr float lerp(float a, float b, float t) noexcept;
constexpr double lerp(double a, double b, double t) noexcept;
constexpr long double lerp(long double a, long double b, long double t) noexcept;