
Крис
12.10.2018
12:17:10

Alexey
12.10.2018
12:17:22
->* какбэ

Владислав
12.10.2018
12:17:45

Alexey
12.10.2018
12:17:51
(obj->*methodPtr)()

Google

Alexey
12.10.2018
12:18:06
ну дык в чатике по C++ ожидаемо будут плюсы, не?

Владислав
12.10.2018
12:18:11
Потрясный синтаксис

Крис
12.10.2018
12:18:12

Alexander
12.10.2018
12:18:21

Alexey
12.10.2018
12:18:29
неа
один

Alexander
12.10.2018
12:18:56
https://en.cppreference.com/w/cpp/language/operator_member_access

Крис
12.10.2018
12:19:04
неа
о_О, ничего себе. Я думал что по указателю на метод достаточно просто первым параметром передать обьект на котором вызываем метод

Alexey
12.10.2018
12:24:13
гыы... я думал что всего 3 оператора, которые нельзя перегружать. Оказывается, 4
., ::, ?:, .*
век живи, век учись
кстати из приколов стандарта С++:
int a[2];
int* b = a;
int* c = a+3;
int* d = c - 3;
(b == d) // UB

Dmitry
12.10.2018
12:30:38

Google

Крис
12.10.2018
12:33:22

Antony
12.10.2018
12:34:14
Сергей сказал через две недели.
Да, мне тоже сказали что где-то через 2 недели.
Видео появится вот тут https://events.yandex.ru/events/meetings/11-oct-2018/

Alexey
12.10.2018
12:39:52
А почему?
Потому что стандарт гарантирует равенство указателей только в том случае, если они однородны: указатель на элемент массива допустим только если он указывает на элемент массива или на адрес, указывающий непосредственно за границу массива.
a + 3 для массива менее чем на 3 элемента даёт указатель, не имеющий отношения к сущности a, а b относится к сущности a, следовательно, дальнейшие манипуляции - UB

Alex Фэils?︙
12.10.2018
12:46:11

Ayaz
12.10.2018
12:46:27
Ого, в gcc вмерджили Networking TS
https://github.com/gcc-mirror/gcc/commit/4e61dba8a38e13125daeba9af250f846df1bba11

Alexander
12.10.2018
12:48:16

Alexey
12.10.2018
12:50:21
чуток позже, ок?

Alex Фэils?︙
12.10.2018
12:51:25

Alexey
12.10.2018
12:52:39
где-то видел статью на эту тему, там прямые ссылки на стандарт и выдержки из неё, но пока надо ещё поафриканить

Antony
12.10.2018
13:04:41

Alexander
12.10.2018
13:05:23
Ой ну что ты начинаешь сразу :)

Alexey
12.10.2018
13:05:59
там же даже тесты вроде ?)
чо, тесты валятся?)

Aidar
12.10.2018
13:18:14
Готовимся выбрасывать буст?

Stanislav
12.10.2018
13:19:17

Ruslan
12.10.2018
13:27:21
https://youtu.be/ZlHi8txU4aQ

Alexander
12.10.2018
13:34:03
куда ж нам без hana&))))

Google

Aidar
12.10.2018
13:34:29
нам хана без хана

Stanislav
12.10.2018
13:35:41

Alexey
12.10.2018
13:57:40
@zamazan4ik https://habr.com/company/pvs-studio/blog/418023/

Grigor
12.10.2018
14:14:35

Alexander
12.10.2018
14:21:59
@alexey_tkachenko_by я не могу найти всё равно, что это undefined behavior

Constantine
12.10.2018
14:55:16

Олег
12.10.2018
14:59:33
Оно же плохо спасает. Возьмем экстремумы синусоиды и как нам вообще выводить ответ? Указанием множества, оси симметрии и точек на ней?
Экстремумы синусоиды не целочисленны. Но пример неплох. Можно же просто взять два ряда точек с равными промежутками: (0, 0), (1, 0), (2, 0), …, (1000, 0) и (0, 1), (1, 1), (2, 1), …, (1000, 1). Для каждой пары «точка снизу» и «точка сверху ближе к краю» найдётся третья, порождающая треугольник. Вот тебе и ответ порядка Θ(N²).

Alexey
12.10.2018
15:00:19

Alexander
12.10.2018
15:01:32
так мб это unspecified behavior @alexey_tkachenko_by

Constantine
12.10.2018
15:01:57
Экстремумы синусоиды не целочисленны. Но пример неплох. Можно же просто взять два ряда точек с равными промежутками: (0, 0), (1, 0), (2, 0), …, (1000, 0) и (0, 1), (1, 1), (2, 1), …, (1000, 1). Для каждой пары «точка снизу» и «точка сверху ближе к краю» найдётся третья, порождающая треугольник. Вот тебе и ответ порядка Θ(N²).
Ну я имею в виду синусоиду пожать в pi по Х, то есть { x, y: 0 <= x < N, y \in { 0, 1 }, x + y = 0 (mod 2) }

Dmitry
12.10.2018
15:02:34
Как скастить std::vector<std::reference_wrapper<const T>> к boost::any_range<T, boost::bidirectional_traversal_tag>?

Олег
12.10.2018
15:07:09

Alexey
12.10.2018
15:13:28

Constantine
12.10.2018
15:14:24
поясни различие плиз
unspecified это значит, что компилятор должен сказать, что здесь, но вы не должны этим пользоваться, например, возвращаемый тип некоторых функций

Alexey
12.10.2018
15:15:14
а undefined чем принципиально отличается?

Constantine
12.10.2018
15:16:07
тем, что undefined это значит, что компилятор имеет право считать, что такое не происходит
результат sizeof(int) является unspecified, но не undefined

Igor
12.10.2018
15:19:44
unspecified != implementation defined ?

Stanislav
12.10.2018
15:19:47
http://eel.is/c++draft/intro.defs#defns.undefined
http://eel.is/c++draft/intro.defs#defns.unspecified

Google

Stanislav
12.10.2018
15:20:48
ну т.е. да !=
implementation-defined
behavior, for a well-formed program construct and correct data, that depends on the implementation and that each implementation documents

Igor
12.10.2018
15:23:22
imp.def - различается но задокументировано, а unspec - различается, незадокументировано, может меняться а-ля boost::detail?

Ilia
12.10.2018
15:41:33

Boris
12.10.2018
16:07:22
tags: #cmake
/CMakeLists.txt :
add_subdirectory(my_lib)
add_executable(my_exe)
target_link_libraries(my_exe my_lib)
/my_lib/CMakeLists.txt :
add_library(my_lib)
target_include_directories(my_lib include)
Как изменить второй cmake-файл, чтобы его include были расшарены другим целям? Не хочу прокидывать в корневом cmake-файле такое:
target_include_directories(my_exe my_lib/include)

Igor
12.10.2018
16:07:59
target_include_directories(my_lib PUBLIC include)

Boris
12.10.2018
16:09:50
Для корневого, где основной таргет, ничего не меняется?

Igor
12.10.2018
16:17:13
не меняется, видимо что-то не так делаешь - у меня всё норм