rostislav
https://www.youtube.com/watch?v=lO1z-7cuRYI&list=PL_AKIMJc4roXJldxjJGtH8PJb4dY6nN1D&index=1
Alexey
а std не для людей пишется, да?
Гибко и всё такое, но как же неудобно
rostislav
о тут даже видно ;)
rostislav
что такое раст
Nikita
что такое раст
Что-то, что пыталось взлететь, но уже мало кому нужно
Vladislav
Evgenii
Nikita
уже?)
да, я люблю колкие подбирать частицы)
Stanislav
Vladislav
Evgenii
Alexey
сделай)
Да мне-то и qt хватает, но за std обидно
Alexey
Ты сам предложил посмотреть доклады с конференции)
Stanislav
Dmitry
А если брать указатель на функцию в качестве параметра шаблона, то эта функция всё равно инлайниться не будет?
Dmitry
имеется ввиду функция-член
Dmitry
или проще вопрос :: если брать указатель на функцию и тут же её вызывать по указателю - инлайн спугнётся?
Dmitry
переживаю за инлайны
Andrei
Может запросто, да.
Dmitry
Dmitry
как-то слишком просто в плюсах инлайны и констекспры спугнуть
Roman
Почему?
Dmitry
я хочу жестко задавать, если не может, то пусть не собирает
Evgenii
Evgenii
как будто шаблонов мало
Anatoly
Evgenii
ну есть же атрибут
Evgenii
ну кому известно, а кому и не известно
Evgenii
я об __attribute__((always_inline)) если что
Anatoly
Почему?
inline - это просьба, которую компилятор может оставить без внимания
Evgenii
ну кроме того когда это ломает
Evgenii
типа рекурсий
Evgenii
Generally, functions are not inlined unless optimization is specified. For functions declared inline, this attribute inlines the function independent of any restrictions that otherwise apply to inlining. Failure to inline such a function is diagnosed as an error. Note that if such a function is called indirectly the compiler may or may not inline it depending on optimization level and a failure to inline an indirect call may or may not be diagnosed.
Evgenii
https://gcc.gnu.org/onlinedocs/gcc/Common-Function-Attributes.html#Common-Function-Attributes
Evgenii
предположу что второе
Dmitry
как его задействовать?)
Evgenii
Dmitry
error: unknown type name 'always_inline'
Alexey
Кланг же вроде тоже поддерживает атрибуты
https://clang.llvm.org/docs/AttributeReference.html
Evgenii
Dmitry
clang вроде тоже прожевал
Dmitry
с вызовом по указателю не ругнулось
Dmitry
хотя надо ассемблер смотреть
Roman
Vladislav
Anatoly
с вызовом по указателю не ругнулось
неважно inline или не inline, а взятие адреса у inline функции c внешним связыванием гарантирует, что адрес будет одним во всех единицах трансляции (An inline function with external linkage shall have the same address in all
translation units)
Dmitry
а нафиг тогда нужен этот ещё один инлайн?
Dmitry
обычный инлайн - это, значит, как мусор компилятору пальцем погрозил, а always_inline как путин
Dmitry
ясно
Anatoly
ну, относись к этому, как к этапам развития системы управления компилятором
Anatoly
если inline ничего не гарантирует, то программистам понадобилось средство стопроцентной встройки, разработчики компиляторов откликнулись forceinline-ом
Anatoly
другие поставщики предоставили атрибуты типа __attribute__((always_inline))
Vladislav
и теперь приходится всякое такое городить
Vladislav
// always inline
#ifdef _MSC_VER
# define FOLLY_ALWAYS_INLINE __forceinline
#elif defined(__clang__) || defined(__GNUC__)
# define FOLLY_ALWAYS_INLINE inline __attribute__((__always_inline__))
#else
# define FOLLY_ALWAYS_INLINE inline
#endif
Evgenii
Vladislav
https://github.com/facebook/folly/blob/master/folly/CPortability.h
Evgenii
Vladislav
а зачем FOLLY_SANITIZE_ADDRESS?
чтобы почекать, включен ли ASAN (и задизейблить его для несовместимого кода, см. FOLLY_DISABLE_ADDRESS_SANITIZER)
Anatoly
Evgenii
Vladislav
Vladislav
https://github.com/facebook/folly/blob/master/folly/experimental/Bits.h#L70
Evgenii
Igor
"Разработчиков компилятора настолько задолбали юзеры, сующие везде force_inline, что они сделали анализ его использования в коде и предусмотрели ошибку <программист не уммет пользоваться инлайном>"
(С)
Evgenii
Berkus
Berkus
где там цитата про четыре вида инлайнов в msvc ни один из который не гарантирует инлайна? )
Крылатый
Lisa
Подскажите, пожалуйста, как преобразовать сбалансированное дерево в дерево поиска.
Artem
это вопрос уровня "как преобразовать черный сапог в правый"
Купи
Откройте уже чат для студентов
Одни и те же вопросы каждый год
Lisa
Artem
ну просто если посмотреть на определения сбалансированного дерева и дерева поиска, становится понятно, что если это сбалансированное дерево не построено изначально как дерево поиска (например левый потомок меньше родителя, правый больше), то ответ - "перестроить". А если построено, то ответ "ввести операцию поиска элемента".
Artem
обратный вопрос (как сбалансировать дерево поиска) имеет смысл, там можно всякие повороты придумать
Berkus
Nikolai
Ребята, чем лог на 6 гигов открыть можно? Какой редактор осилит?
Artem
less