Вот интересно у кого глаз наметан и уже много лет с этим возитесь — сколько времени у вас уйдет на то, чтобы распарсить эту абракадабру и понять как, допустим, ее проинициализировать?
Скажем, проинициализировать так — в корне char с значением 'a', а далее везде массивы с 1 элементом.
Re: char *(*(**foo[][8])())[]; - за сколько распарсите?
Здравствуйте, Shmj, Вы писали:
S>Вот интересно у кого глаз наметан и уже много лет с этим возитесь — сколько времени у вас уйдет на то, чтобы распарсить эту абракадабру и понять как, допустим, ее проинициализировать?
array of unspecified size of array [8] of pointer to pointer to function without parameters returning pointer to array of unspecified size of pointer to char
P.S. Если захочется с этим поиграться, то, возможно тебе придется расширять набор специализаций. Думаю, это будет не очень сложно — по образу и подобию.
P.P.S. Ну и что хочется заметить, что сложность объявлений в C/C++ не является открытием и прямо вот в таком виде в промышленном коде никто такие конструкции не употребляет. Благо есть алиасы типов с помощью которых коду можно придать удобочитаемый вид.
Вот такое нехитрое разложение:
using A = char*[];
using F = A*();
using foo = F**[][8];
--
Не можешь достичь желаемого — пожелай достигнутого.
Здравствуйте, Shmj, Вы писали:
S>char *(*(**foo[][8])())[]; — за сколько распарсите?
Ты если решил-таки заняться самообразованием (что отрадно), то я бы тебе рекомендовал начать вот с этой замечательной книженции, которую я рекомендовал и рекомендую всем, кто не читал:
Здравствуйте, Shmj, Вы писали:
S>Вот интересно у кого глаз наметан и уже много лет с этим возитесь — сколько времени у вас уйдет на то, чтобы распарсить эту абракадабру и понять как, допустим, ее проинициализировать?
Если б мне такое на кодревью вывалили, ну, оно не прошло бы ревью.
Re[3]: char *(*(**foo[][8])())[]; - за сколько распарсите?
R>array of unspecified size of array [8] of pointer to pointer to function without parameters returning pointer to array of unspecified size of pointer to char
R>P.S. Если захочется с этим поиграться, то, возможно тебе придется расширять набор специализаций. Думаю, это будет не очень сложно — по образу и подобию.
И как по подобию будет для "void (X::*)()" http://coliru.stacked-crooked.com/a/97f7fe57e86d98a4
Re[5]: char *(*(**foo[][8])())[]; - за сколько распарсите?
ИМХО, ты напрасно завел отдельную специализацию для указателей на функции-члены. И члены-данные, и члены-функции можно обработать общей специализацией указателя на член. Разница только в том, что в одном случае будет тип-объект, а в другом тип-функция. И первое и второе потом распарсится соответствующими специализациями. Подход с общей специализацией формирует более правильное представление о структуре синтаксиса (это ведь учебное упражнение). Да и писанины меньше — и свободные функции, и функции-члены сводятся к одному общему анализатору.
_>А лямбды можно впихать?
Можно, но с ограничением: без auto в параметрах. Тип возвращаемого значения может быть auto. Можно одним движением охватить и ляибды, и std::function, и пользовательские функционалы.
01. array of unspecified size of array [8] of pointer to pointer to function () returning pointer to array of unspecified size of pointer to char
02. pointer to function (char, pointer to array [8] of pointer to pointer to function () returning pointer to array of unspecified size of pointer to char, int) returning int
03. pointer to function () returning int
04. pointer to member of 'struct A' of type: int
05. function (lvalue refrence to const char, lvalue refrence to double) returning int
06. immutable function (lvalue refrence to const char, lvalue refrence to double) returning int
07. function () returning int
08. immutable function () returning int
09. immutable functional object () returning void
10. immutable functional object (int) returning double
11. functional object (int) returning double
12. functional object (int, lvalue refrence to const std::string, pointer to const char, double) returning double
13. immutable functional object (int, lvalue refrence to const std::string, double, pointer to const char) returning double
--
Не можешь достичь желаемого — пожелай достигнутого.
Здравствуйте, wander, Вы писали:
R>>И что, даже предположений не возникает, почему не работает?
W>И как всегда нет от ТС ответа. W>Никогда диалога не получается.
Не все сразу — позже вернусь к этому. Пока нет привычной мне IDE под рукой.
Re[4]: char *(*(**foo[][8])())[]; - за сколько распарсите?
Здравствуйте, rg45, Вы писали:
S>>Вставил ваш пример и чего-то не работает: https://ideone.com/k9ZXbI
R>Только сейчас открыл ссылку — это трындец, конечно. R>А ты комментарии читал вокруг или "вставил" первый фрагмент, который попался под руку? R>И что, даже предположений не возникает, почему не работает?
Тогда не глянул, сейчас посмотрел — read_type же требует передачи 1 аргумента. Но не понятно как вам удалось вызывать ее без аргументов.
лучше. Я бы не брал в команду человека, который хейтит, унижает. Вы, может быть, пока выгодно — не раскрываете свою сущность. Но как только что — ожидай подвоха.
Я никогда не унижаю людей — даже если они имеют некие проблемы с интеллектом или что-то сложно им дается. Каждому свое. Просто либо пройду мимо либо покажу верное решение без перехода на личности.
Re[7]: char *(*(**foo[][8])())[]; - за сколько распарсите?
Здравствуйте, reversecode, Вы писали:
R>то есть то что вы пиявка паразит вы за собой не замечаете ? R>и то как вас все откровенное не любят как минимум в теме С++ тоже ? R>я бы таких пиявок паразитов вообще выгонял ото всюду
Что значит паразит? Форум и создан для обсуждения вопросов. Простые вопросы обсуждают на этом же форуме.
Нет возможности ответить — я вас за язык не тяну, можете не отвечать.
Re: char *(*(**foo[][8])())[]; - за сколько распарсите?
Здравствуйте, Shmj, Вы писали:
S>Вот интересно у кого глаз наметан и уже много лет с этим возитесь — сколько времени у вас уйдет на то, чтобы распарсить эту абракадабру и понять как, допустим, ее проинициализировать?
У балтийцев на контру особый нюх: из нагана в лоб контре — ТЮХ!
Абсолютно в любом языке есть способы писать write only код.
И в любом коллективе есть методы так не делать.
Начиная от организационных: пулреквест не пройдёт ревью, коллеги в курилке набьют морду, подставьте ваши варианты.
И кончая литературными: переписать код так, чтобы он стал читаемым.
Смешанный синтаксис типов в Си плохо читается, поэтому надо использовать синонимы типов, записанные, например, в префиксном виде.
Здравствуйте, Shmj, Вы писали:
S>Вот интересно у кого глаз наметан и уже много лет с этим возитесь — сколько времени у вас уйдет на то, чтобы распарсить эту абракадабру и понять как, допустим, ее проинициализировать?
За такое в production code полагается тапком и нахрен на мороз из профессии.
... << RSDN@Home 1.3.110 alpha 5 rev. 62>>
Забанили по IP, значит пора закрыть эту страницу.
Всем пока