- 01
- 02
- 03
- 04
- 05
- 06
- 07
- 08
- 09
- 10
- 11
- 12
- 13
- 14
#include <iostream>
int get_number() {
return 5;
}
int magic_number(int foo()) {
return foo();
}
int main(void)
{
std::cout << magic_number(get_number) << std::endl;
}
Нашли или выдавили из себя код, который нельзя назвать нормальным, на который без улыбки не взглянешь? Не торопитесь его удалять или рефакторить, — запостите его на говнокод.ру, посмеёмся вместе!
+49
#include <iostream>
int get_number() {
return 5;
}
int magic_number(int foo()) {
return foo();
}
int main(void)
{
std::cout << magic_number(get_number) << std::endl;
}
http://ideone.com/TbV0jD
int (*func1)(void) = *func;
int (*func2)(void) = &func;
int (*func3)(void) = func;
int (*func4)(void) = ****func;
вообще по барабану, функции всегда приводятся к указателю.
амперсанд не нужен.
звездочка нужна только в typedef'е.
- Ну хоть где-то у нас дыра.
Сожалею о содеянном.
Вообще, очень интересный нюанс, который опущен в литературе и не популярен у кодеров (ещё не встречал такой вариант)...
Надобно в стандарте покопаться.
Вы только что охарактеризовали половину постов раздела С++ на Говнокоде.
Вот это «очень интересный нюанс» может колебаться от «ух ты, кресты и так умеют», до «нашёл наступил на очередные граблки в блядских крестах FFFffffuuu~ »
А вот и нет.
Я о таком способе объявления указателя на функцию узнал из книги Мейерса, а окончательно "закрепил материал" в доках к boost::function, в них аргументом шаблона передается тип указателя на функцию в таком сокращенном виде, как в коде поста.
И сидит под нарами.