+11
- 01
- 02
- 03
- 04
- 05
- 06
- 07
- 08
- 09
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
int a[4]={};
void f(void){}
void functionWithArrayParam(int (&a)[4])
{
a[3]=4;
}
void functionWithFunctionParam(void (*f)(void))
{
f();
};
int (&functionReturnArray(void))[4]
{
return a;
}
void (*arrayOfFunction[4])(void)={f,f,f,f};
void (*functionReturnFunction(void))(void)
{
return f;
};
int main() {
functionReturnArray()[3]=4;
functionWithArrayParam(a);
arrayOfFunction[3]();
functionWithFunctionParam(f);
functionReturnFunction()();
Батхертный путь C++
Просветление — состояние полной осознанности (выход за пределы дуального ума)... Это скачкообразное изменение восприятия окружающего мира, знаменующее собой переход к отличной от общепринятой форме мышления. Одновременно является началом открытия чакры «третьего глаза» и трамплином для глубоких изменений сознания. Как витальная форма, тяжело поддается ментальному описанию.
Батхертный путь C++ - путь, которым идут просветленные последователи Дао и Дзен С++, способные писать всё в одном выражении.
Доступность этого пути в C++ усиливает возможности C++ по созданию одного и того же кода самыми разнообразными и очень красивыми способами.
Следуя этому пути можно писать такой крутой код, что все товарищи из команды, работающие над кодом, над которым вы работаете вместе с ними, будут завидовать вам и бить вас за это при каждой встрече с разворота.
Этот принцип батхертного пути C++, лежащий в основе C++, помогает потратить дополнительные 1000% времени на разработку и поддержку C++ программ и получить за это дополнительные деньги. Поэтому C++ крайне выгоден!
Взглянем на малую часть основ этого пути при объявлении массивов и функций в C++:
Док-ва истинности пути к просветлению:
http://ideone.com/FCW4f
Итак, используя эти простые принципы нужно написать массив функций, возвращающих массив функций с параметром функция, принимающая массив функций, возвращающих функцию void (void)? typedef запрещён.
Останется только один! Истинный просветленный носитель разума и света!
Если вы знаете другие основы батхертного пути C++, то искренне прошу поделиться с нами вашими открытыми чакрами.
Запостил: LispGovno,
06 Ноября 2012
LispGovno 06.11.2012 18:31 # 0
http://govnokod.ru/12064
bormand 06.11.2012 18:42 # +6
Нельзя вот так вот взять и написать массив функций. Можно только массив указателей на функции.
LispGovno 06.11.2012 18:43 # 0
bormand 06.11.2012 19:02 # +5
1) Указатель на функцию void (void): 2) массив указателей на функции, возвращающих указатель на функцию void (void) в доме который построил Джек: 3) Указатель на функцию, принимающую массив указателей на функции, возвращающих указатель на функцию void (void): 4) Массив указателей на функции с параметром указатель на функцию, принимающую массив указателей на функции, возвращающих указатель на функцию void (void)
void (*[]) (void (*)(void (*(*[])())()));[/code] 5) массив указателей на функции, возвращающих массив указателей на функции с параметром указатель на функцию, принимающую массив указателей на функции, возвращающих указатель на функцию void (void): Си - это просто ;)
P.S. Надеюсь нигде не ошибся.
bormand 06.11.2012 19:12 # 0
LispGovno 06.11.2012 19:12 # 0
bormand 06.11.2012 19:19 # +1
bormand 06.11.2012 19:22 # +1
bormand 06.11.2012 19:31 # +1
Как-то так, но я уже ни в чем не уверен.
LispGovno 06.11.2012 19:43 # 0
Я не понимаю что в этой всей теме написано, так что проверить тебя не могу. Ждем умных людей. Сорри.
bormand 06.11.2012 22:47 # +1
Взялся за гуж, не говори, что не дюж.
LispGovno 06.11.2012 23:13 # 0
http://cdecl.ridiculousfish.com
bormand 06.11.2012 23:28 # +2
P.S. Если честно - в практике никогда не возникало даже желания вернуть сишный массив. Указатель на массив в куче, вектор какой-нибудь это часто. А массив ни разу.
LispGovno 06.11.2012 23:38 # +1
defecate-plusplus 06.11.2012 23:38 # +2
LispGovno 06.11.2012 23:40 # 0
>а разве можно?)
Дождались. А у меня между прочим вся надежда была на вас. :-[
LispGovno 06.11.2012 23:41 # +1
defecate-plusplus 07.11.2012 00:13 # +2
единственный случай, когда это хоть как то может пригодиться - внутри в объекте хранится массив статической длины (типа my::array<int, 100>) и мы его пытаемся вернуть по ссылке, чтобы порадовать крестоблпринципиальную систему вывода типов
интересно, можно ли в таком классе определить оператор приведения к int[100] & ?
LispGovno 07.11.2012 00:23 # 0
Думаю и к T[N]& (где T и N - шаблоны).
defecate-plusplus 07.11.2012 00:28 # +2
интересен синтаксис этого извращения
> auto
нет, скорее передача в
template <class T, size_t N>
void foo(T (&arg)[N]) { ... some code working with array[N]... }
LispGovno 07.11.2012 00:40 # 0
LispGovno 07.11.2012 01:23 # 0
defecate-plusplus 07.11.2012 07:29 # +3
auto без ссылки компилятором выведется как T * вместо T[N]
по очевидной причине - массивы нельзя присваивать, это не структуры
LispGovno 07.11.2012 00:26 # 0
Это очевидно, но я с трудом могу представить себе, когда это реально нужно.
> чтобы порадовать крестоблпринципиальную систему вывода типов
auto? Вроде проблем быть не должно?
LispGovno 06.11.2012 23:47 # +2
Кстати, похоже ОП пытался сделать отсылку к какой-то книге:
Читал я вроде какую-то книгу "Бархатный путь C++" или что-то подобное.
bormand 06.11.2012 23:46 # +1
LispGovno 06.11.2012 23:53 # 0
TarasB 06.11.2012 19:37 # 0
http://www.gamedev.ru/flame/forum/?id=156269
LispGovno 06.11.2012 19:41 # 0
TarasB 06.11.2012 20:11 # +1
в разделе програмиррование
совсем искать разучился
LispGovno 06.11.2012 20:23 # 0
myaut 06.11.2012 20:18 # −2
Указатели на функции - это Си :)
defecate-plusplus 06.11.2012 20:22 # +2
LispGovno 06.11.2012 20:22 # +1
Fai 07.11.2012 00:36 # +4
inkanus-gray 07.11.2012 03:52 # +5
3oJloToy_xyeLL 24.08.2021 21:26 # 0