Aroch
> ты пришел когда уже всё разжевано но всё равно уперся в авто
Последнее время участились случаи недохождения писем. Вот пишешь бывает письмо, и понимаешь, что не дошло.
ну и по поводу авто в догонку:
template<typename T> void foo(T t); void foo( auto t);
кто считает auto сахаром, здесь ведь нет никакой разницы, правда? :)
jaguard
> 1. Как найти интересную работу на С++, если умеешь только проходить собесы и отвечать на хитрые вопросы про реинтерпткаст, сфинае и констексп?
ну как ни крути, а требуется пройти через данное изнасилование мозга как собес
Aroch
> кто считает auto сахаром, здесь ведь нет никакой разницы, правда? :)
Выходит, что нет, в чем подвох?
https://godbolt.org/z/67TsYGxb6
https://godbolt.org/z/jM3KrYxqq
Сравнение signed и unsigned.
Сложение большого значение в float с маленьким.
auto и decltype(auto).
if constexpr в шаблоне и без шаблона.
Рекурсии в constexpr функциях и шаблонах.
Всякие извращения с enable_if в шаблонах.
POD, тривиальные типы, memcpy, как переопределить is_trivial.
Исключения в конструкторе и деструкторе.
Виртуальные методы в конструкторе и деструкторе.
Дефолтные параметры в виртуальных функциях.
vector vs list, но это больше в оптимизации под ЦП.
move, можно ли использовать после move.
Порядок вызова функций при передаче в функцию [типа fn( a(), b(), c() )], актуально для move.
memory order в атомиках.
mutex, как избежать дедлока (unique_lock).
сложность (О) контейнеров.
как устроена unordered_map, можно ли быстрее.
сортировки, можно ли ускорить.
Профессор ДиректИкс
> плиз сложных вопросов по плюсам по темам конструкторов, копирования, виртуальности, умных указателей и исключений
- порядок вызова конструкторов/деструкторов при множественном виртуальном/невиртуальном наследовании, можно даже не ромбиком;
- тот же вопрос, но при копировании/перемещении объекта, а так же при наличии/отсутствии/запрете соответствующих конструкторов в базовых классах;
- те же вопросы, но если базовые классы тоже от чего-то унаследованы (не множественно);
- правила выбора noexcept перегрузки конструктора и как это всё связано со стандартными контейнерами;
- когда срабатывает RVO/copy ellision, когда не срабатывает;
- в каком случае ссылка "держит" объект и каким образом это происходит (копируется ли он, в какой момент, каким конструктором, всегда ли)
totoro
> и попробуй его переубеди
Это должен поговорить человек, который его нанимал.
Знаю таких заряженных стильных модных молодёжных ребят, видел, даже не одного. С возрастом проходит.
totoro
> Говорит, что это модно, стильно, молодежно, и попробуй его переубеди :/
А что не так? Ты считаешь что мув не нужон? Или что нужна const&? Зависит от содержимого foo такто. Может там принимаемый объект кудато мувается, в поле объекта например. И тогда такой способ сэкономит лишнее копипование при
foo(Boo())
1 frag / 2 deaths
А передать ссылку/кукозатель и сделать мув уже там, не? Кулхацкер выпиндреж, как тернарный оператор и operator””.
jaguard
А равзе можно сделать мув из конст ссылки?
А разве можно передать мутабельную ссылку на рвалуе?
1 frag / 2 deaths
> А что не так? Ты считаешь что мув не нужон?
Насколько я понимаю, мув затащили в C++ 11 ради unique_ptr, но решили реализовать в самом общем виде через RValue-костыли. В результате чего мы имеем такую фигню, как "смувленный" объект, который все равно полнофункционален (хотя и не рекомендуется им пользоваться до момента "переинициализации"). Вроде ты же сам на это ругался, если я не путаю :)
Dmitry_Milk
Я ругался на то что разрешили нетривиальный мув - лишнее усложнение
А так невозможно на этапе компиляции в общем случае узнать смувлен обиект или нет. Ну кроме растовских штучек типа смували из вектора - уничтожили весь вектор.
1 frag / 2 deaths
> А что не так?
Изначально код писал более опытный коллега, в нем данная концепция применялась в разрезе std::unique_ptr, что в принципе допустимо. Далее в ход пошли std::string и прочее.
1 frag / 2 deaths
> А равзе можно сделать мув из конст ссылки?
> А разве можно передать мутабельную ссылку на рвалуе?
Можно передать объект по значению, например.
totoro
> Можно передать объект по значению, например.
Но в коде так и делается же.
Тогда что не так-то?
Никогда такого не было и вот опять повторилось...
Тема в архиве.