Size: a a a

2020 September 01

A

Alex in pro.cxx
Alexey Kuznetsov
О том и речь, что функционально нового ничего нет. Просто можно выкинуть кучу мусора для того чтобы получить тот же функционал. Конечно это хорошо, никто не спорит. Но сравнивая с тем же мувом например, без мув семантики, просто нельзя было заматчить функцию принимающую только временные объекты, никаких мув конструкторов нельзя было сделать впринципе
+
источник

PK

Pavel Kazakov in pro.cxx
Roman na
Это ничего не значит. В рамках си существует тысячи расширений, языки развиваются. Поэтому язык - это не какой-то отдельный набор фич, а это база
Кто сказал, что ничего не значит?
источник

VR

Vladyslav Ryuzaki in pro.cxx
Vladyslav Ryuzaki
Разве компилятор не понимает по флоу, что объект перемещен?(тут я не знаю, поэтому спрашиваю)
Если он сам делает ряд оптимизаций из-за времени жизни обьекта
источник

Rn

Roman na in pro.cxx
Pavel Kazakov
Кто сказал, что ничего не значит?
Я сказал. У меня есть основания. У тебя нет ничего. Поэтому ты ничего на это и не ответил, кроме клоунады очередной
источник

PK

Pavel Kazakov in pro.cxx
Ну ладно, извини тогда. :)
источник

Rn

Roman na in pro.cxx
Bohdan Bessonov
Видимо, если в автомобиле есть двигатель и 4 колеса, это одинаковые автомобили, а все остальное - надстройки и расширения
А так - и то, и то автомобиль..
Что является С++ - С++11 или С++20?  Ведь никаких надстроек и расширений нет?
источник

m

magras in pro.cxx
Vladyslav Ryuzaki
Разве компилятор не понимает по флоу, что объект перемещен?(тут я не знаю, поэтому спрашиваю)
void Foo(bool cond) {
 Bar bar;
 if (cond)
   Baz(std::move(bar));
 // to call destructor or not to call?
}
источник

VR

Vladyslav Ryuzaki in pro.cxx
magras
void Foo(bool cond) {
 Bar bar;
 if (cond)
   Baz(std::move(bar));
 // to call destructor or not to call?
}
Попали в иф - не вызывать
источник

m

magras in pro.cxx
Vladyslav Ryuzaki
Попали в иф - не вызывать
Ты это знаешь только в рантайме. Тебе нужно где-то хранить эту информацию.
источник

VR

Vladyslav Ryuzaki in pro.cxx
magras
Ты это знаешь только в рантайме. Тебе нужно где-то хранить эту информацию.
Чтобы дальше после ифа по коду знать это?
источник

BB

Bohdan Bessonov in pro.cxx
Roman na
Что является С++ - С++11 или С++20?  Ведь никаких надстроек и расширений нет?
С++ом являются оба стандарта указанных
При этом С++ - не новый стандарт языка Си, и не расширение языка Си.
источник

VR

Vladyslav Ryuzaki in pro.cxx
Ибо в этом примере у нас в асме же два разных флоу будет, в одном делаем, в другом нет
источник

m

magras in pro.cxx
Vladyslav Ryuzaki
Чтобы дальше после ифа по коду знать это?
Ну окей, чуть модифицирую:
Foo foo;
maybe_take_ownership(foo);
источник

VF

Vitaly Farmov in pro.cxx
Alex
Насчёт мощной базы согласен, но в целом, по-моему, я не понял, что вы хотели сказать. Повторюсь, что я не вижу, что бы такого позволяли концепты, что нельзя было сделать раньше, только более коряво и многословно. Нововведение языка, которое позволяет делать старые трюки удобнее и изящнее - это ли не определение сахара?
перегрузка деструкторов, например
источник

N

Neargye in pro.cxx
Alex
> Про другие языки писал, неявно. И я сообщил почему
Вот и я о том же: сам себе придумал - сам с собой поспорил. Настрочил кучу строк, по сути ничего не ответил.

Повторяю третий раз: концепты не позволяют мне реализовать ничего такого, что я не мог бы реализовать раньше без них в С++17. Единственным адекватным ответом мне будет контр-пример, а не три листа писанины на темы, которые я не затрагивал.
например можно проверить констехпр ли

template<auto> struct require_constant;
template<class T>
concept has_constexpr_data = requires { typename require_constant<T::get_data()>; };

если вы скажите как это же сделать на с++17 я буду крайне благодарен! ибо заюзаю для фалбека с 20 на 17
источник

Rn

Roman na in pro.cxx
Bohdan Bessonov
С++ом являются оба стандарта указанных
При этом С++ - не новый стандарт языка Си, и не расширение языка Си.
У тебя проблемы с методичкой. Во-первых стандарт ничего не значит. Никакого "стандартного С++" не существует. Во-вторых я тебе не спрашивал о том, что ты там считаешь. Ты считаешь так, как тебе сообщили. Я спросил - почему. И ты не ответил. И не ответишь.

К тому же, оказывается надстройки ни на что не влияют. И С++ определяет название, т.е. те самые 4 колеса. А ты же утверждал иное? А чего так?
источник

BB

Bohdan Bessonov in pro.cxx
Roman na
У тебя проблемы с методичкой. Во-первых стандарт ничего не значит. Никакого "стандартного С++" не существует. Во-вторых я тебе не спрашивал о том, что ты там считаешь. Ты считаешь так, как тебе сообщили. Я спросил - почему. И ты не ответил. И не ответишь.

К тому же, оказывается надстройки ни на что не влияют. И С++ определяет название, т.е. те самые 4 колеса. А ты же утверждал иное? А чего так?
Я не знаю что ты называешь методичкой. Агрессируй в другом месте.
Спорить с человеком, не умеющим доносить свои мысли, я не собираюсь.
источник

AK

Alexey Kuznetsov in pro.cxx
Neargye
например можно проверить констехпр ли

template<auto> struct require_constant;
template<class T>
concept has_constexpr_data = requires { typename require_constant<T::get_data()>; };

если вы скажите как это же сделать на с++17 я буду крайне благодарен! ибо заюзаю для фалбека с 20 на 17
detect idiom
источник

N

Neargye in pro.cxx
Alexey Kuznetsov
detect idiom
constexpr не является частю сигнатуры
источник

AK

Alexey Kuznetsov in pro.cxx
Neargye
constexpr не является частю сигнатуры
выводите булку, делаете специализации врапперов, наследуетесь
источник