Металл spe c говорит, что рекурсивные функции недопустимы. Однако это прекрасно скомпилируется:
int b(int c) {
if (c == 1)
return b(c++);
else if (c == 2)
return b(c + 2);
else
return c;
}
Почему это так? Какое определение рекурсива использует Metal? Это относится к разделу 5.2.2 C ++ 14 spe c, который также не дает какого-либо определения «рекурсивный», поэтому я ожидаю, что вышеприведенное будет стандартным примером рекурсии.
Даже если я сделаю это, он все равно скомпилирует:
int b(int c) {
return b(c + 2);
}
Что дает?!