
Alexey
14.06.2017
19:44:46

Evgeniy
14.06.2017
19:44:55

Alexey
14.06.2017
19:45:28
сделай)
Да мне-то и qt хватает, но за std обидно

Alexander
14.06.2017
19:45:35
снова поднимаете вопросы об убогости СТЛ? ну не провоцируйте, а:)

Google

Alexey
14.06.2017
19:46:01
Ты сам предложил посмотреть доклады с конференции)

Stanislav
14.06.2017
19:46:26

Alexander
14.06.2017
19:48:36

reagentoo
14.06.2017
20:37:14
А если брать указатель на функцию в качестве параметра шаблона, то эта функция всё равно инлайниться не будет?
имеется ввиду функция-член
или проще вопрос :: если брать указатель на функцию и тут же её вызывать по указателю - инлайн спугнётся?
переживаю за инлайны

Andrei
14.06.2017
20:42:41
Может запросто, да.

reagentoo
14.06.2017
20:44:47
как-то слишком просто в плюсах инлайны и констекспры спугнуть

Alexander
14.06.2017
20:45:17
инлайны вообще на усмотрение компилятора

Роман
14.06.2017
20:45:35
Почему?

reagentoo
14.06.2017
20:45:56
я хочу жестко задавать, если не может, то пусть не собирает

Evgeniy
14.06.2017
20:46:55

Google

Evgeniy
14.06.2017
20:47:06
как будто шаблонов мало

Anatoly
14.06.2017
20:47:26

Evgeniy
14.06.2017
20:47:30

Alexander
14.06.2017
20:47:41
это ж известно
это рекомендация, а не правило
есть ещё force_inline

Evgeniy
14.06.2017
20:48:11
я об __attribute__((always_inline)) если что

Anatoly
14.06.2017
20:48:59
Почему?
inline - это просьба, которую компилятор может оставить без внимания

Alexander
14.06.2017
20:49:33
но тут мне читать надо уже, да

Evgeniy
14.06.2017
20:49:46
типа рекурсий

Alexander
14.06.2017
20:50:06
где можно глянуть?
так, это стандартный атрибут?
или просто расширение для гнутого компила?

Evgeniy
14.06.2017
20:50:42
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.
https://gcc.gnu.org/onlinedocs/gcc/Common-Function-Attributes.html#Common-Function-Attributes

Alexander
14.06.2017
20:51:00
ааа, про гнутый атрибут знаем

Google

Evgeniy
14.06.2017
20:51:06

Alexander
14.06.2017
20:51:15
я думал, такой атрибут в стандарт закинули уже

reagentoo
14.06.2017
20:52:39
как его задействовать?)

Evgeniy
14.06.2017
20:52:52

reagentoo
14.06.2017
20:53:26
error: unknown type name 'always_inline'

Alexander
14.06.2017
20:55:02

Alexey
14.06.2017
20:56:51
Кланг же вроде тоже поддерживает атрибуты
https://clang.llvm.org/docs/AttributeReference.html

Evgeniy
14.06.2017
20:56:58

reagentoo
14.06.2017
20:59:41
clang вроде тоже прожевал
с вызовом по указателю не ругнулось
хотя надо ассемблер смотреть

Роман
14.06.2017
21:04:05

Vladislav
14.06.2017
21:08:36

Anatoly
14.06.2017
21:47:05
с вызовом по указателю не ругнулось
неважно inline или не inline, а взятие адреса у inline функции c внешним связыванием гарантирует, что адрес будет одним во всех единицах трансляции (An inline function with external linkage shall have the same address in all
translation units)

reagentoo
14.06.2017
21:49:02
а нафиг тогда нужен этот ещё один инлайн?
обычный инлайн - это, значит, как мусор компилятору пальцем погрозил, а always_inline как путин
ясно

Anatoly
14.06.2017
21:52:57
ну, относись к этому, как к этапам развития системы управления компилятором
если inline ничего не гарантирует, то программистам понадобилось средство стопроцентной встройки, разработчики компиляторов откликнулись forceinline-ом

Google

Anatoly
14.06.2017
21:54:56
другие поставщики предоставили атрибуты типа __attribute__((always_inline))

Vladislav
14.06.2017
21:56:21
и теперь приходится всякое такое городить
// 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

Admin
ERROR: S client not available

Evgeniy
14.06.2017
22:03:24

Vladislav
14.06.2017
22:06:23
https://github.com/facebook/folly/blob/master/folly/CPortability.h

Evgeniy
14.06.2017
22:09:21

Vladislav
14.06.2017
22:10:10

Anatoly
14.06.2017
22:11:37

Evgeniy
14.06.2017
22:13:23

Vladislav
14.06.2017
22:14:17
https://github.com/facebook/folly/blob/master/folly/experimental/Bits.h#L70

Evgeniy
14.06.2017
22:16:22

Igor
15.06.2017
05:40:40
есть ещё force_inline
"Разработчиков компилятора настолько задолбали юзеры, сующие везде force_inline, что они сделали анализ его использования в коде и предусмотрели ошибку <программист не уммет пользоваться инлайном>"
(С)

Evgeniy
15.06.2017
05:42:21

Berkus
15.06.2017
06:42:55
это ж из буста либа

F.L
15.06.2017
10:52:12
#supapro

Group Butler [beta]
15.06.2017
10:52:12
#supapro
Чат supapro.cxx: https://telegram.me/joinchat/BYlFbD3eN3JMaG34hyh96w

Lisa
15.06.2017
10:52:39
Подскажите, пожалуйста, как преобразовать сбалансированное дерево в дерево поиска.

Google

Artem
15.06.2017
10:55:16
это вопрос уровня "как преобразовать черный сапог в правый"

Alexander
15.06.2017
10:55:34

F.L
15.06.2017
10:56:40
Откройте уже чат для студентов
Одни и те же вопросы каждый год

Lisa
15.06.2017
10:56:54

Artem
15.06.2017
11:00:42
ну просто если посмотреть на определения сбалансированного дерева и дерева поиска, становится понятно, что если это сбалансированное дерево не построено изначально как дерево поиска (например левый потомок меньше родителя, правый больше), то ответ - "перестроить". А если построено, то ответ "ввести операцию поиска элемента".
обратный вопрос (как сбалансировать дерево поиска) имеет смысл, там можно всякие повороты придумать

Berkus
15.06.2017
11:08:45

F.L
15.06.2017
11:09:45

Evgeniy
15.06.2017
11:15:02
на эти деньги можно весь год жить
с двух сессий

F.L
15.06.2017
11:15:30
Как?
Я б помогал