kitsu
потому как без загрузки этого всего в оперативу по многу раз нельзя слинковать
вот меня и интересует способ, чтобы он загрузил один раз в оперативу и не сливал обратно на диск
Dmitry
или что там gnu-тое линкует
Dmitry
а почему clang линкует? coreutils же
sys-devel/binutils-2.29.1-r1 тоесть
kitsu
а почему clang линкует? coreutils же
мм, кстати да возможно там какие-то оптимизации по дефолту
kitsu
Вообще странненько, вроде как и линкуются файлы из временной директории (вне подмонтированного раздела) и в параметрах запуска линкера ничего подозрительного не вижу
kitsu
Если вдруг кому интересно clang ld: https://pastebin.com/t01zvtdn gcc ld: https://pastebin.com/KE5rMzWP
Anton
есть кто пишет в vs code? вопросик есть
Anton
как IntelliSense заставить понимать C++11 и выше? он мне ворнинги выдает к примеру в range-based циклах
Anton
range based for loop is C++11 extension, ну и с auto та же байда
Олександр
А что в документации по настройкам пишут?
Dmitry
а скажите, CLion умеет в gdb отладку? вот хочу идею для разработки под STM32
Anton
А что в документации по настройкам пишут?
ну там ничего не написано, но это как-то странно, ибо щас пришла обнова и больше ворнингов он мне не пишет
Anton
ты используешь advanced lint?
нет, от мелкомягких C/C++
I
нет, от мелкомягких C/C++
Я лично установил cppcheck и отключил нативную проверку от мелкомягких
I
нет, от мелкомягких C/C++
хотя насколько я помню офф пакет от мелкомягких не включает в себя линтер
Constantine
Я, возможно, не до конца понимаю вопрос, но этот код делает то, что надо, или нет? И если нет, то укажите что именно #include <iostream> #include <string> #include <memory> #include <typeinfo> #include <cassert> struct Base { virtual std::string me() { return "Base"; } }; struct Derived : Base { virtual std::string me() override { return "Derived"; } }; struct DoubleDerived : Derived { virtual std::string me() override { return "DoubleDerived"; } }; template <typename B, typename D> std::shared_ptr<B> clone(std::shared_ptr<B> ptr) { auto downcasted = std::dynamic_pointer_cast<D>(ptr); assert(downcasted); auto cloned = std::make_shared<D>(*downcasted); auto upcasted = std::static_pointer_cast<B>(cloned); return upcasted; } int main() { auto bd = std::static_pointer_cast<Base>(std::make_shared<Derived>(Derived())); auto bdd = std::static_pointer_cast<Base>(std::make_shared<DoubleDerived>(DoubleDerived())); auto dd = std::static_pointer_cast<Derived>(std::make_shared<DoubleDerived>(DoubleDerived())); std::cout << "-----------------Original ptrs--------------------" << std::endl; std::cout << bd->me() << std::endl; std::cout << bdd->me() << std::endl; std::cout << dd->me() << std::endl; auto bd_clone = clone<Base, Derived>(bd); auto bdd_clone = clone<Base, DoubleDerived>(bdd); auto dd_clone = clone<Derived, DoubleDerived>(dd); std::cout << "------------------Cloned ptrs--------------------" << std::endl; std::cout << bd_clone->me() << std::endl; std::cout << bdd_clone->me() << std::endl; std::cout << dd_clone->me() << std::endl; }
Вот это ты ништяк срезки делаешь
Constantine
Где??
auto cloned = std::make_shared<D>(*downcasted);
Max
auto cloned = std::make_shared<D>(*downcasted);
Откуда срезка, если downcasted есть указатель на D, и я делаю новый D?
Aidar
Я, возможно, не до конца понимаю вопрос, но этот код делает то, что надо, или нет? И если нет, то укажите что именно #include <iostream> #include <string> #include <memory> #include <typeinfo> #include <cassert> struct Base { virtual std::string me() { return "Base"; } }; struct Derived : Base { virtual std::string me() override { return "Derived"; } }; struct DoubleDerived : Derived { virtual std::string me() override { return "DoubleDerived"; } }; template <typename B, typename D> std::shared_ptr<B> clone(std::shared_ptr<B> ptr) { auto downcasted = std::dynamic_pointer_cast<D>(ptr); assert(downcasted); auto cloned = std::make_shared<D>(*downcasted); auto upcasted = std::static_pointer_cast<B>(cloned); return upcasted; } int main() { auto bd = std::static_pointer_cast<Base>(std::make_shared<Derived>(Derived())); auto bdd = std::static_pointer_cast<Base>(std::make_shared<DoubleDerived>(DoubleDerived())); auto dd = std::static_pointer_cast<Derived>(std::make_shared<DoubleDerived>(DoubleDerived())); std::cout << "-----------------Original ptrs--------------------" << std::endl; std::cout << bd->me() << std::endl; std::cout << bdd->me() << std::endl; std::cout << dd->me() << std::endl; auto bd_clone = clone<Base, Derived>(bd); auto bdd_clone = clone<Base, DoubleDerived>(bdd); auto dd_clone = clone<Derived, DoubleDerived>(dd); std::cout << "------------------Cloned ptrs--------------------" << std::endl; std::cout << bd_clone->me() << std::endl; std::cout << bdd_clone->me() << std::endl; std::cout << dd_clone->me() << std::endl; }
а если местами параметры поменяешь нужно будет только один из них писать
Aidar
там нет ее если D есть правильный тип
Aidar
но ты это не проверишь
Max
Ну D мы как раз и передаем
Max
Вот это ты ништяк срезки делаешь
Так ты нашел решение кроме чего-то подобного на это? https://ideone.com/IuQSsy
Anton
Ребят, тут вопрос такой. Нет ли каких-нибудь онтопных онлайн сервисов для code review?
Egor
В каком смысле "онтопных"? Чем не подходят GitHub/BitBucket?
Anton
Ребят, тут вопрос такой. Нет ли каких-нибудь онтопных онлайн сервисов для code review?
Во всех этих штуках есть возможность ревью. Но имхо все они грешат тем, что ревью как бы размазывается по коммитам. Т.е. вот у тебя ветка под тикет, вот там 100 коммитов в ней и нет никакой возможности всю историю ревью разом посмотреть, придётся как-то таскаться по всем коммитам. Мазохизм
Anton
В апсорсе, например, ревью - отдельный процесс
Anton
В каком смысле "онтопных"? Чем не подходят GitHub/BitBucket?
Онтоп -- поддержка подсветки синтаксиса C++. Необходимо именно поддержка заливки диффов. Классический пример -- collaborator, но он платный.
Anton
В апсорсе, например, ревью - отдельный процесс
Да, необходим именно отдельный процесс.
Anton
Да, необходим именно отдельный процесс.
Мы пользуемся гитлабом и апсорсом. Чаще гитлабом, ибо всем впадлу тыкать апсорс :)
Anton
https://www.jetbrains.com/upsource/
Anton
https://www.jetbrains.com/upsource/
Это именно сервак или онлайн-сервис?
Anton
Чьёрт.(
Constantine
Так ты нашел решение кроме чего-то подобного на это? https://ideone.com/IuQSsy
Вопрос вообще не в том как закулхачить, вопрос в том как ковариантность типа ввести, чтобы можно было не хачить
Aidar
Свои смартпоинтеры с наследованиями?
Constantine
Свои смартпоинтеры с наследованиями?
Ковариантен только указатель, это никак
Aidar
А я понял
Aidar
Ты опять хочешь плюсы поломать пропосалами
Constantine
Вопрос вообще не в том как закулхачить, вопрос в том как ковариантность типа ввести, чтобы можно было не хачить
Если надо закулхачить, то можно clone_impl объявить без возврата shared_ptr и обертывать в невиртуальном clone
Constantine
Ты опять хочешь плюсы поломать пропосалами
Не поломать, ну согласись что сейчас это тупо дефект языка
Aidar
Там есть побольше дефекты
Aidar
Сейчас плюсы - язык которым пугают студентов
Constantine
Ну я пока знают только два в динамических полиморфизмах
Constantine
Сейчас плюсы - язык которым пугают студентов
Это не дефект, С++ и не должен быть языком для студентов
Constantine
Но я студент(
Тогда иди учись лалка
Aidar
"Дайв инто аэрокос"
Constantine
Сложность языка С++ состоит в необходимости понимания 146 концепций, сейчас это вполне пригодный язык. Если авторы стандарта еще догадаются, что можно в модули дописать конфигурацию и перестать париться по поводу совместимости с текущим кодом, будет вообще годно
Anton
Это не дефект, С++ и не должен быть языком для студентов
То самое чувство, когда давали плюсы на первом курсе, а потом понеслось. Это странное утверждение.
Aidar
Но факт фактом - с++ пугают студентов
Constantine
То самое чувство, когда давали плюсы на первом курсе, а потом понеслось. Это странное утверждение.
Странно как раз утверждать, что проста освоения обязательна для языка программирования. Кажется, упростить понимание студентами математики не задача математики
Constantine
Просто по такой логике математика не для студентов, так как тоже сложна.
Нет, это логика что не надо учить функан до матанализа
Max
Странно как раз утверждать, что проста освоения обязательна для языка программирования. Кажется, упростить понимание студентами математики не задача математики
Верно, это не задача математики, это как раз задача преподавателя. C++ ругают за сложность по той причине, что тех концепций, о которых вы всмпомнили, еще пару лет назад было вдвое меньше.
Max
"Тяжелее" звучит не очень. Скорее, сложнее.
Max
Мне - нет. Мне стало только интереснее. Но я сам серьезно занимаюсь этим чуть более 2-х лет, поэтому осваивая базу, я уже так или иначе был готов к новым стандартам. Но не всем людям при виде шаблонов в шаблонах становится приятно на душе или у них сразу появляется огромное желание разобраться в этом.
Max
Я не знаю новых концепций С++17 со времен С++11
Пусть пару лет это будет 6 или 7 :)
Max
Я не знаю новых концепций С++17 со времен С++11
А хотя подождите, move-семантика же с C++14?
Anton
Ребят, как часто на работе вы сталкиваетесь с многопоточностью?
Constantine
почему в телеге нельзя поставить лойс?
Constantine
первым языком?)
Constantine
соболезную) имхо таки надо на питончике или паскалике или на край яве учить)
Max
Ребят, как часто на работе вы сталкиваетесь с многопоточностью?
Вот на рабочее место сажусь, логинюсь и сразу сталкиваюсь )
Крылатый
Паскаль для учёбы топчик.
Крылатый
Всё что нужно и без большой ёбли.)
Constantine
Паскаль для этого и придуман, хех
Anton
и с чем у вас связана деятельность?)
Max
не везде
Constantine
первый семестр Самарского универа, первый язык - плюсы, хехе
Max
Мои извращенные желания. Ибо зачем их тогда придумали?