Сообщение Re[15]: Определение регулярных последовательностей статическ от 16.12.2024 14:56
Изменено 16.12.2024 15:32 rg45
Re[15]: Определение регулярных последовательностей статическ
Здравствуйте, Евгений Музыченко, Вы писали:
ЕМ>Я ответил в том смысле, что с извращениями могу и сам, а менять одно извращение (традиционный сишный развесистый стиль, в котором все хотя бы хорошо видно и управляемо) на ненавистную магию (которая радует исключительно до того момента, когда из-за какой-нибудь мелкой ошибки все уродливые потроха этой магии не вылезут наружу) просто не вижу смысла.
Ну то, что с извращениями ты можешь я ни на секунду не сомневался. Мой подход, возможно, не прост в реализации, зато даёт как нельзя более простое и естественное использование. Например, рекурсивный обход дерева конфигурационных параметров из этого примера
Причем, SomeOperatrion может быть как run-time, так и compile-time операцией. Весь фокус, как можно догадаться, находится внутри aggregates::Apply, который лежит потихоньку в отдельном файле и есть не просит.
Но тебе такое "извращение", конечное же, не подходит. Тебе нужно, чтобы твоё "срала-мазала" было размазано тонким слоем по всей программе
ЕМ>Я ответил в том смысле, что с извращениями могу и сам, а менять одно извращение (традиционный сишный развесистый стиль, в котором все хотя бы хорошо видно и управляемо) на ненавистную магию (которая радует исключительно до того момента, когда из-за какой-нибудь мелкой ошибки все уродливые потроха этой магии не вылезут наружу) просто не вижу смысла.
Ну то, что с извращениями ты можешь я ни на секунду не сомневался. Мой подход, возможно, не прост в реализации, зато даёт как нельзя более простое и естественное использование. Например, рекурсивный обход дерева конфигурационных параметров из этого примера
Автор: rg45
Дата: 14.12 23:23
мог бы выглядеть примерно так:Дата: 14.12 23:23
auto SomeOperation(Numeric auto&&) {/*. . .*/}
auto SomeOperation(String auto&&) {/*. . .*/}
auto SomeOperation(Range auto&&) {/*. . .*/}
auto SomeOperation(Aggregate auto&& t)
{
return aggregates::Apply(t, [](auto&&...x){ return (SomeOperation(x) | ...); });
}
struct {
// . . .
} inline constexpr Config;
int main()
{
SomeOperation(Config);
}
Причем, SomeOperatrion может быть как run-time, так и compile-time операцией. Весь фокус, как можно догадаться, находится внутри aggregates::Apply, который лежит потихоньку в отдельном файле и есть не просит.
Но тебе такое "извращение", конечное же, не подходит. Тебе нужно, чтобы твоё "срала-мазала" было размазано тонким слоем по всей программе
Re[15]: Определение регулярных последовательностей статическ
Здравствуйте, Евгений Музыченко, Вы писали:
ЕМ>Я ответил в том смысле, что с извращениями могу и сам, а менять одно извращение (традиционный сишный развесистый стиль, в котором все хотя бы хорошо видно и управляемо) на ненавистную магию (которая радует исключительно до того момента, когда из-за какой-нибудь мелкой ошибки все уродливые потроха этой магии не вылезут наружу) просто не вижу смысла.
Ну то, что с извращениями ты можешь я ни на секунду не сомневался. Мой подход, возможно, не прост в реализации, зато даёт как нельзя более простое и естественное использование. Например, рекурсивный обход дерева конфигурационных параметров из этого примера
Причем, SomeOperatrion может быть как run-time, так и compile-time операцией. Весь фокус, как можно догадаться, находится внутри aggregates::Apply, который лежит потихоньку в отдельном файле и есть не просит.
Но тебе такое "извращение", конечное же, не подходит. Тебе нужно, чтобы твоё "срала-мазала" было размазано тонким слоем по всей программе
ЕМ>Я ответил в том смысле, что с извращениями могу и сам, а менять одно извращение (традиционный сишный развесистый стиль, в котором все хотя бы хорошо видно и управляемо) на ненавистную магию (которая радует исключительно до того момента, когда из-за какой-нибудь мелкой ошибки все уродливые потроха этой магии не вылезут наружу) просто не вижу смысла.
Ну то, что с извращениями ты можешь я ни на секунду не сомневался. Мой подход, возможно, не прост в реализации, зато даёт как нельзя более простое и естественное использование. Например, рекурсивный обход дерева конфигурационных параметров из этого примера
Автор: rg45
Дата: 14.12 23:23
мог бы выглядеть примерно так:Дата: 14.12 23:23
auto SomeOperation(Numeric auto&&) {/*. . .*/}
auto SomeOperation(String auto&&) {/*. . .*/}
auto SomeOperation(Range auto&&) {/*. . .*/}
auto SomeOperation(Aggregate auto&& t)
{
return aggregates::Apply(t, [](auto&&...x){ return (SomeOperation(x) | ...); });
}
struct {
constexpr auto operator()(Numeric auto&&) const {/*. . .*/}
constexpr auto operator()(String auto&&) const {/*. . .*/}
constexpr auto operator()(Range auto&&) const {/*. . .*/}
constexpr auto operator()(Aggregate auto&& t) const
{
return aggregates::Apply(t, [this](auto&&...x){ return ((*this)(x) or ...); });
}
} inline constexpr AnotherOperattion;
struct {
// . . .
} inline constexpr Config;
int main()
{
SomeOperation(Config);
AnotherOperation(Config);
}
Причем, SomeOperatrion может быть как run-time, так и compile-time операцией. Весь фокус, как можно догадаться, находится внутри aggregates::Apply, который лежит потихоньку в отдельном файле и есть не просит.
Но тебе такое "извращение", конечное же, не подходит. Тебе нужно, чтобы твоё "срала-мазала" было размазано тонким слоем по всей программе