Open
Description
Min repro:
template <typename R1>
static R1 self_recursion_template(const R1& input)
{
return self_recursion_template<R1>(input);
}
static int self_recursion_non_template(const int& input)
{
return self_recursion_non_template(input);
}
int main()
{
int input{};
const int result = self_recursion_template(input);
// const int result = self_recursion_non_template(input); // Properly fails to compile
(void)result;
}
Expected results: compilation fails for the templated version of infinite self-recursion like it does for the non-templated version of infinite self-recursion.
Actual results: compiles and then stack overflows when trying to run it.
Additionally, msvc
rejects the code.
Demo: https://godbolt.org/z/eEq7PT771
Ubuntu clang version 20.1.6 (++20250517123339+5befd1fb3c97-1~exp1~20250517003355.120