Nikita
получается я из тех немногих, которые определяют самостоятельно что использовать и на что переходить
А лицензии? А не поломались ли что при обновлении third-party? А не добавит ли новая зависимость больше ада при поддержке кода?
vladislav
>то есть по сути я управляю собой где-то прослезился дзен-буддист
Vladislav
Удобно
Vladislav
https://yandex.com/images/search?text=uroboros
Berkus
и как бы ты смог доказать сам себе необходимость перейти на с++17?
vladislav
#шутеечка
std::mpa 🇺🇦
Справедливо
Anatoly
А лицензии? А не поломались ли что при обновлении third-party? А не добавит ли новая зависимость больше ада при поддержке кода?
Да, на эти вопросы всегда надо иметь ответ. Самый страшный был переход с Visual Studio 6 Debug на 2010 Release и полностью разрозненной сборки около 600 энтерпрайс модулей на cmake. Теперь все более менее под контролем
Anatoly
в принципе, когда я пришел в компанию большая система была на грани хаотического разброда
Anatoly
а сейчас VS 2015 и собираемся переходить на 2017
Berkus
c 15 на 17 переход в целом незаметный
Berkus
я с 10 на 15 переходил на удивление легко
Anatoly
да, тоже фактически не заметил, хотя поймал вольность 2010 с тем, что он делает copy ellision не смотря на отсутствие доступного копирующего конструктора
Ivan
Парни, приведите реальный пример когда вам нужен был указатель на член класса?
Ivan
Был ли он в вашей жизни? Когда гипотетически указатель на член класса может понадобиьтся?
Anatoly
когда надо завернуть вызов члена класса в контексте объекта в std::function
Ivan
С примерами
Ivan
Не, что-нибудь на ideone
Ivan
Для чего это может понадобиться, например
Anatoly
http://ideone.com/iMU1P6
Constantine
Есть структура ItemProperty, у которой есть поля и флажки, какие поля определены однозначно. Нужно после запроса выписать данные
Constantine
Это делается через auto read_value = [](auto ItemProperty::*member, int mask){ //.... } read_value(&ItemProperty::Face, ItemProperty::FACE_FLAG); read_value(&ItemProperty::Size, ItemProperty::SIZE_FLAG);
Anatoly
как только появляется нужда в косвенном вызове, тогда возникают указатели на функции, члены данных, члены функции
Ivan
http://ideone.com/iMU1P6
Функция вне класса на самом деле находится
Constantine
Эта функция вне класса
Anatoly
а вызывается член класс А
Anatoly
в контексте объект A o
Ivan
В смысле она таким же синтаксисом вызовется и для другого класса
Anatoly
у тебя есть std::function<void (int)>
Ivan
Всё, всё. Я тебя понял
Anatoly
я могу сюда статическую функцию завернуть, а могу функцию член
Александр
через точку вызов девиртуализируется
эээ, для ссылок же всё норм будет, виртуальный сработает UPD: прочитал выше, уже сказали
Constantine
Для указателей на функции есть еще примеры с заворачиваниями struct Some { private: //сигнатуры здесь одинаковы в силу магии bool TryAddTable(...); bool TryAddImage(...); void AddObject(bool (Some::*adder)(...), ...); //безумно сложный метод, делает 4 вызова adder в худшем случае public: void AddTable(...); void AddImage(...); };
Ivan
Я подтвердил твои слова
Александр
Constantine
Кстати, еще есть "фича", что у std::unique_ptr нельзя вызвать метод по ->*
Vladislav
в c++17 std::invoke придумали
Vladislav
а так, (*p).*
F a d e r
Vladislav
unique_ptr<C> p; std::invoke(p, C::f); должен работать
Fo
У раста ошибки теперь по-круче чем крестов! #убийцасисиплюс
Fo
Vladislav
убивший дракона - сам становится драконом
Artur &
всем привет
Artur &
тут вопросы - типа обсуждение проекта - обсуждаются ? подскажите
Anatoly
задать вопрос точно можно
RattenKong 🦧🐀🦍️
Плохой гонец раньше головы лтшался, а сейчас - тела?
Berkus
гонец из Пизы
Dmitry
из Пензы
Constantine
Делайте шаблонным параметром
Constantine
Проверьте только на incomplete type, а то опять упадет на докторе
Constantine
Совершенно случайно - кто-нибудь может помочь с запуском pvs studio?
Я в свое время запускал ее, было ощущение полной халтуры
Ruslan
ну на винде работает просто отлично. на линуксе не пробовал
Vladislav
а в CLRS тяжелая математика, считается?
Ivan
чушь
Вот тебя я и ждал. Расскажи
Berkus
чушь
не чушь. obj.func() вызывает функцию на объекте напрямую как Obj::func(obj);
Berkus
по референсу понятное дело виртуально тоже
Andrei
Это не то, что ты сказал.
Berkus
это зато то что я имел в виду
Vladislav
так там первые 300 страниц - мат. введение. Дальше математики особо нет уже
Vladislav
ну есть еще глава про Amortized Analysis, но ее можно с чистой совестью пропустить, если не интересно
Andrei
это зато то что я имел в виду
То, что ты имел в виду, не оправдывает того, как тебя поняли :)
FailsBot
http://en.cppreference.com/w/cpp/utility/functional/invoke
🦥Alex Fails
в c++17 std::invoke придумали
Мне эта вещь оченб понравилась
Constantine
ну есть еще глава про Amortized Analysis, но ее можно с чистой совестью пропустить, если не интересно
А потом писать TreeSet для визит, чтобы быстрее первая непосещенная вершина дфс искалась :)
Vladislav
вещей, для которых еще нет готовых библиотек, всегда будет намного больше. Кроме того, без понимания алгоритмов все равно не получится эффективно использовать имеющиеся библиотеки
Andrei
Я книги по алгоритмам воспринимаю исключительно как справочники.
Vladislav
опять же, все нормальные конторы на интервью в первую очередь проверяют понимание алгоритмики