LINUX.ORG.RU

История изменений

Исправление Siborgium, (текущая версия) :

Т.е. по-хорошему надо чтобы внутрь условия if можно было бы запихать произвольный блок кода.

if (auto [x, y, z] = [&]{
    auto x = foo();
    auto y = bar(x);

    return std::tuple{ x, y, baz(x, y) };
}(); z) {
   // ...
}

не говоря уже о возможности завернуть весь if в свой скоуп.

что не отменяет

Я не буду повторяться и заново рассказывать о том, почему это нужно – rationale более чем подробно описывает различные юзкейсы. Просто предлагаю автору родить то же самое на CRTP и сравнить понятность и простоту кода.

Бонусные очки за воспроизведение полиморфности по value category this.

Исправление Siborgium, :

Т.е. по-хорошему надо чтобы внутрь условия if можно было бы запихать произвольный блок кода.

if (auto all = [&]{
    auto x = foo();
    auto y = bar(x);

    return std::tuple{ x, y, baz(x, y) };
}(); std::get<bool>(all)) {
   // ...
}

не говоря уже о возможности завернуть весь if в свой скоуп.

А с P1061 «Structured bindings can introduce Pack» можно будет писать

if (auto [x, y, cond] = ...

что не отменяет

Я не буду повторяться и заново рассказывать о том, почему это нужно – rationale более чем подробно описывает различные юзкейсы. Просто предлагаю автору родить то же самое на CRTP и сравнить понятность и простоту кода.

Бонусные очки за воспроизведение полиморфности по value category this.

Исправление Siborgium, :

Т.е. по-хорошему надо чтобы внутрь условия if можно было бы запихать произвольный блок кода.

if (auto all = [&]{
    auto x = foo();
    auto y = bar(x);

    return std::tuple{ x, y, baz(x, y) };
}(); std::get<bool>(all)) {
   // ...
}

не говоря уже о возможности завернуть весь if в свой скоуп.

что не отменяет

Я не буду повторяться и заново рассказывать о том, почему это нужно – rationale более чем подробно описывает различные юзкейсы. Просто предлагаю автору родить то же самое на CRTP и сравнить понятность и простоту кода.

Бонусные очки за воспроизведение полиморфности по value category this.

Исправление Siborgium, :

Т.е. по-хорошему надо чтобы внутрь условия if можно было бы запихать произвольный блок кода.

if (auto all = [&](){
    auto x = foo();
    auto y = bar(x);

    return std::tuple{ x, y, baz(x, y) };
}(); std::get<bool>(all)) {
   // ...
}

не говоря уже о возможности завернуть весь if в свой скоуп.

что не отменяет

Я не буду повторяться и заново рассказывать о том, почему это нужно – rationale более чем подробно описывает различные юзкейсы. Просто предлагаю автору родить то же самое на CRTP и сравнить понятность и простоту кода.

Бонусные очки за воспроизведение полиморфности по value category this.

Исправление Siborgium, :

Т.е. по-хорошему надо чтобы внутрь условия if можно было бы запихать произвольный блок кода.

if (auto all = [&](){
    auto x = foo();
    auto y = bar(x);

    return std::tuple{ x, y, baz(x, y) };
}; std::get<bool>(all)) {
   // ...
}

не говоря уже о возможности завернуть весь if в свой скоуп.

что не отменяет

Я не буду повторяться и заново рассказывать о том, почему это нужно – rationale более чем подробно описывает различные юзкейсы. Просто предлагаю автору родить то же самое на CRTP и сравнить понятность и простоту кода.

Бонусные очки за воспроизведение полиморфности по value category this.

Исходная версия Siborgium, :

Т.е. по-хорошему надо чтобы внутрь условия if можно было бы запихать произвольный блок кода.

if (auto all = [&](){
    auto x = foo();
    auto y = bar(x);

    return std::tuple{ x, y, baz(x, y) };
}; std::get<bool>(all)) {
   // ...
}

не говоря уже о возможности завернуть весь if в свой скоуп.

что не отменяет

Я не буду повторяться и заново рассказывать о том, почему это нужно – rationale более чем подробно описывает различные юзкейсы. Просто предлагаю автору родить то же самое на CRTP и сравнить понятность и простоту кода.