Я наткнулся на странный С++-фрагмент. Я считаю это неправильным кодом. Почему кто-то повторяет объявление функции внутри функции? Он даже компилируется при смене сигнатуры типа на unsigned int sum(int, int)
, производя ожидаемый результат 4294967294j. Почему это даже компилируется?
#include <iostream>
#include <typeinfo>
using namespace std;
int sum(int a, int b){
return a + b;
}
int main()
{
int sum(int, int); // redeclaring sum???
int a = -1;
auto result = sum(a, a);
cout << result << typeid(result).name() << endl;
}
Изменить: он компилируется для меня... но действительно ли это код на С++? Если нет, то почему компилятор (mingw 4.8.1) разрешает это?