https://gcc.gnu.org/bugzilla/show_bug.cgi?id=101870
Bug ID: 101870
Summary: std::lerp is missing Arithmetic overloads
Product: gcc
Version: 11.2.0
Status: UNCONFIRMED
Severity: normal
Priority: P3
Component: libstdc++
Assignee: unassigned at gcc dot gnu.org
Reporter: konstantinua00 at gmail dot com
Target Milestone: ---
According to C++20 standard paragraph 20.8.1.2, std::lerp is not an exception
to expansion of acceptable parameters to integral and mixed floating point
types.
I.e. overload 4) from https://en.cppreference.com/w/cpp/numeric/lerp is
missing.
Example code (compile with -std=c++20):
#include<cmath>
int main()
{
std::lerp(int{},int{},int{});
std::lerp(float{}, double{}, (long double)0);
}
https://godbolt.org/z/3PqP9M4GE
Current behaviour:
Does not compile with: "error: call of overloaded 'lerp(int, int, int)' is
ambiguous" and "error: call of overloaded 'lerp(float, double, long double)' is
ambiguous".
Expected behaviour:
Compilation with no issues.