Нашли или выдавили из себя код, который нельзя назвать нормальным,
на который без улыбки не взглянешь?
Не торопитесь его удалять или рефакторить, — запостите его на
говнокод.ру, посмеёмся вместе!
#include <stdio.h>
typedef int (*FUNC)();
FUNC test (int a, int b){
int ret(){
return a + b;
}
return ret;
}
int main(){
printf("%i\n", test(40, 2)());
return 0;
}
/* Тоже самое на JS */
function test(a, b){
function ret(){
return a + b;
}
return ret;
}
alert(test(40, 2)());
# Тоже самое на Python
def test(a, b):
def ret():
return a + b
return ret
print test(40, 2)()
Странно работает компилятор, версия: gcc version 4.7.2
#include <stdio.h>
int main(){
typedef int (*FUNC)();
auto FUNC test (int, int);
printf("%i\n", test(40, 2)());
return 0;
auto FUNC test (int a, int b){
int ret(){
return a + b;
}
return ret;
}
}
Похоже на "ya perepesala"
Что за уебанский синтаксис?
https://wandbox.org/permlink/2JdEM4yb4b1cILJr
https://wandbox.org/permlink/rz1tpk1NXTMrEVrt
Clang:
-O0 4200214
-O1 4201616
-O2 0
-O3 0
GCC (просто шикарно):
-O0 13
-O1 42
-O2 42
-O3 42
Осталось доработать до constexpr, чтобы можно было определять и в компайлтайме.
Компайлтайм UB'ы - это сильно.