История изменений
Исправление 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 и сравнить понятность и простоту кода.