Matwey
Ок
🙃
так что всем пох че там у кого и где тормозит, видать в реальной программе с строжашими требованиями к перфомансу std::function удовлетвояет этим требованиям
По идее же в std::function оверхедом является только вызов через vtbl, + пара разименований указателя на саму функцию, + пара дополнительных вызовов. Кроме этого ведь ничего не может быть?
Alexander
По идее же в std::function оверхедом является только вызов через vtbl, + пара разименований указателя на саму функцию, + пара дополнительных вызовов. Кроме этого ведь ничего не может быть?
кто его знает, можно только предположить, что как-то так оно работает, но кто его знает как там компилятор ее в итоге разматывает
🙃
Ну я о худшем случае говорю
Oleg
Аллокация. Особенно если лямбду с захватом туда переедаешь
🙃
хуже чем мы его написали ведь компилятор ничего не размотает
🙃
Аллокация. Особенно если лямбду с захватом туда переедаешь
Мне казалось что любая лямбда - отдельный класс, а лямбда с захватами - класс с полями-значениями/ссылками
🙃
std::function же никак не может сам это всё аллоцировать
Matwey
https://www.codeproject.com/Articles/11015/The-Impossibly-Fast-C-Delegates Зачем тогда люди изобретают это?
🙃
он просто не понимает это функтор написанный нами, или лямбда
Oleg
Ага. Но без захвата она оптимизируется до указателя на функцию
Alexander
хуже чем мы его написали ведь компилятор ничего не размотает
ага, хуже не будет. я и имею ввиду, что мы думаем что там аллокации, разыменование и тд а по факту мы не знаем что там, надо сделать небольшой пример и глянуть ассемблер
Aidar
я бы сказал не оптимизируется а выраждается
Alexander
тут наверное стоит отличать еще, о чем речь об инстанциировании std::function или о ее использовании или о том и другом вместе
Anatoly
я бы сказал не оптимизируется а выраждается
Она может быть приведена к указателю на функцию, но при этом имеет уникальный тип
Nikita
https://www.codeproject.com/Articles/11015/The-Impossibly-Fast-C-Delegates Зачем тогда люди изобретают это?
2005 год, теперь это надо проверять и перепроверять
🙃
Мне что во всех этих function и bind не нравится - это всё в дебаге очень говёно выглядит
🙃
step into не сделаешь
🙃
прям задница горит когда такой код дебажишь
🙃
стек вызовов выглядит тоже мусорным
Aidar
ахах
🙃
Интересно вообще, в студии дебаггер нельзя научить игнорить все эти стандартные фичи?
Aidar
в плюсах
🙃
типа автопоинтеров, std::function
🙃
чтоб она всё это прозрачно показывала
🙃
будто их вообще нет
Anatoly
Уже научили
🙃
Как примеры такого враппера гуглить?
🙃
У нас то в основном бустовое всё применяется, было бы прикольно научить дебаггер всё это игнорить
🙃
Особенно напрягает в наших кастомных автопоинтерах типа постоянно делаешь step into в вызов функции - а попадаешь в кучу разименований аргументов
🙃
Норм, но это больше как отображение содержимого кастомных контейнеров
melvin
можно вопрос не по плюсам (хз где спросить просто)?
Aidar
в @fludpac
melvin
о, спасибо
Aidar
еще есть pro.programming но я не знаю ссылку
Anonymous
лабораторной работы, 2 курс
Anonymous
по классам
Anonymous
А куда можно с таким обратиться, не подскажите?
I
Как из clang-check убрать варны из системных либ?
Дмитрий
Здравствуйте, Друзья! Работаю в visual studio и реализую сервер, с возможностью приединения множества клиентов, поэтому юзаю std::thread для распараллеливания. Создал свой пул потоков с ограниченной длинной и т д. Но появилась одна проблема, когда я стал использовать в своём файле #include <thread> #include <mutex>, то вызывая функция bind (которая для сокетов биндим адрес с портом), то происходит автозамена в студии этого метода, который возвращает int на другую функцию с таким же именем - std::bind дл биндинга функций. Вопрос, как явно указать студии, какой метод я хочу использовать? using namespace std пробовал отключать, но без результатов. Есть у кого идеи по этому поводу?
Дмитрий
bind от сокетов хз точно где лежит
Дмитрий
но при инклюде thread и mutex мой bind сокетов заменяется
Дмитрий
да
Дмитрий
#pragma comment(lib, "ws2_32.lib") #include <WinSock2.h>
RAwesoMeat
using namespace - вообще зачем эту боль писать? Убрать однозначно!
I
там был флажок вроде
вот не могу найти. Весь хелп прочитал и в инете искал
Дмитрий
это я на всякий случай, мб кто такое посоветует)
Дмитрий
using namespace - вообще зачем эту боль писать? Убрать однозначно!
Дмитрий
::bind?
ого, работает! Не знал о таком способе)) Спасибо огромное))
Anatoly
это я на всякий случай, мб кто такое посоветует)
если сделаешь минимальный пример тебе скажут сразу, в противном случае процесс затянется на уточнение деталей.
Дмитрий
всем спасибо, заработало))
I
как в кланг-чек отключить линт из /usr/include?
I
какой норм линтер посоветуете кроме flexelint?
Berkus
🦥Alex Fails
какой норм линтер посоветуете кроме flexelint?
Пивас-студия *за кадром: да, спасибо за денюжку*
I
не, не вижу в опциях такого
писали про -isystem/path/to/includes, но не сработало
I
а по дефолту ругается например на std::make_unique
Berkus
в -isystem он не ругается на некоторые вещи да, но смотря как ты его передавал
I
std=c++14
Ну вот на c++11 c++14 выдает такое /usr/lib/gcc/x86_64-linux-gnu/5.4.0/../../../../include/c++/5.4.0/bits/shared_ptr_base.h:522:30: note: in instantiation of function template specialization 'std::allocator_traits<std::allocator<Sphere> >::construct<Sphere, std::unique_ptr<Sphere, std::default_delete<Sphere> > &>' requested here allocator_traits<_Alloc>::construct(__a, _M_ptr(), ^ /usr/lib/gcc/x86_64-linux-gnu/5.4.0/../../../../include/c++/5.4.0/bits/shared_ptr_base.h:617:18: note: in instantiation of function template specialization 'std::_Sp_counted_ptr_inplace<Sphere, std::allocator<Sphere>, __gnu_cxx::_Lock_policy::_S_atomic>::_Sp_counted_ptr_inplace<std::unique_ptr<Sphere, std::default_delete<Sphere> > &>' requested here ::new (__mem) _Sp_cp_type(std::move(__a),
I
ну чтобы код красиво написать и преподу показать)
I
ну и вообще я не привык писать абы как
I
стайл гайду, но как я понимаю кланг-чек еще семантические ошибки находит
I
переключись на libc++?
это клангу передавать надо?
Berkus
-stdlib=libc++ вроде бы
I
я прочитал что для линукса лучше libstdc++ https://stackoverflow.com/a/16788372/6119618