Информация об изменениях

Сообщение Re[15]: Определение регулярных последовательностей статическ от 16.12.2024 14:56

Изменено 16.12.2024 15:34 rg45

Re[15]: Определение регулярных последовательностей статическ
Здравствуйте, Евгений Музыченко, Вы писали:

ЕМ>Я ответил в том смысле, что с извращениями могу и сам, а менять одно извращение (традиционный сишный развесистый стиль, в котором все хотя бы хорошо видно и управляемо) на ненавистную магию (которая радует исключительно до того момента, когда из-за какой-нибудь мелкой ошибки все уродливые потроха этой магии не вылезут наружу) просто не вижу смысла.


Ну то, что с извращениями ты можешь я ни на секунду не сомневался. Мой подход, возможно, не прост в реализации, зато даёт как нельзя более простое и естественное использование. Например, рекурсивный обход дерева конфигурационных параметров из этого примера
Автор: rg45
Дата: 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, который лежит потихоньку в отдельном файле и есть не просит.

Но тебе такое "извращение", конечное же, не подходит. Тебе нужно, чтобы твоё "срала-мазала" было размазано тонким слоем по всей программе
Re[15]: Определение регулярных последовательностей статическ
Здравствуйте, Евгений Музыченко, Вы писали:

ЕМ>Я ответил в том смысле, что с извращениями могу и сам, а менять одно извращение (традиционный сишный развесистый стиль, в котором все хотя бы хорошо видно и управляемо) на ненавистную магию (которая радует исключительно до того момента, когда из-за какой-нибудь мелкой ошибки все уродливые потроха этой магии не вылезут наружу) просто не вижу смысла.


Ну то, что с извращениями ты можешь я ни на секунду не сомневался. Мой подход, возможно, не прост в реализации, зато даёт как нельзя более простое и естественное использование. Например, рекурсивный обход дерева конфигурационных параметров из этого примера
Автор: rg45
Дата: 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 AnotherOperation;

struct {
// . . .
} inline constexpr Config;

int main()
{
    SomeOperation(Config);
    AnotherOperation(Config);
}


Причем, SomeOperatrion может быть как run-time, так и compile-time операцией. Весь фокус, как можно догадаться, находится внутри aggregates::Apply, который лежит потихоньку в отдельном файле и есть не просит.

Но тебе такое "извращение", конечное же, не подходит. Тебе нужно, чтобы твоё "срала-мазала" было размазано тонким слоем по всей программе