
Владислав
03.10.2018
11:06:00

Ilia
03.10.2018
11:08:00

Владислав
03.10.2018
11:08:30

Dmitry
03.10.2018
11:10:40

Google

Владислав
03.10.2018
11:13:30
Спасибо за ответ)
Это не то что бы ответ, найти бы сеньора, который их все знает и применял

Ilia
03.10.2018
11:13:53

Олег
03.10.2018
11:27:17
Привет.
Напомните, я могу в деструкторе понять, из разворачивания ли исключения он вызван, или «штатно»? Если у меня паттерн как во всяких автолоках, но я хочу делать разные вещи в зависимости от.

Pavel
03.10.2018
11:28:24
плохо кончится родной

Ilia
03.10.2018
11:29:28

Александр
03.10.2018
11:29:48

Ilia
03.10.2018
11:30:05

Alexey
03.10.2018
11:31:09
Оно же в любом случае будет штатно, объект помер - деструктор

Олег
03.10.2018
11:34:09


Andrew
03.10.2018
11:39:36
Да, вот я тоже подумал, что в корутинах бросок какого-нибудь условного std::co_return будет штатным её завершением, и всё у меня сломается.
Придётся, видимо, по-старинке, если хочу «делать действие только если всё хорошо», то тупо писать строчку в конце метода.
Ну ты можешь создать локальный struct объект и в его деструктор записать логику, при делании, там можно проверять флаг, который будет меняться в catch.
Понятней ли от этого станет в частном случае, тебе должно быть видней.

Олег
03.10.2018
11:44:07

Google

Ilia
03.10.2018
11:44:47

Олег
03.10.2018
11:46:32
Поясни. Смущает, что так запросто кучу логики запихивается в спецэффекты, она становится неявной?

yuri
03.10.2018
11:49:15
Был у меня случай, надо было массив длл-к проверить на адекватность. И был сделан класс типа DllTestRecord, который перед процедурой писал на диск, а в методе .everything_is_ok() удалял запись. Ну и соответственно, плохая длл потом вычеркивалась из массива.

Andrew
03.10.2018
11:49:19
Ну это удобно, в go же добавили defer

Ilia
03.10.2018
11:50:53

Олег
03.10.2018
11:55:44
Хорошо было писать на чистом C, там сделал два варианта и всё, больше ничего никуда не надо класть.

Nikolai
03.10.2018
11:56:15
Возникла задача. Есть потомки базовый класс и потомки базового класса.
В одну из функций передаю указатель на базовый класс. Можно как-то без явно приведения к потомку, обратиться через указатель базового класса к потомку?
Что-то в головек мешанина. НЕ могу придумать, как без приведения сделать.

Александр
03.10.2018
11:57:26

Igor
03.10.2018
12:02:35

Andrew
03.10.2018
12:03:21

Олег
03.10.2018
12:05:59
Как связаны co_return и исключения?
Это скорее мне надо про корутины в плюсах почитать, а то я только с питоновскими генераторами имел дело, и там в качестве возврата метод __next__ бросает StopIteration.

Nikolai
03.10.2018
12:07:31

Andrew
03.10.2018
12:12:00
Да и не надо подключать классы наследников.
void foo(A* a) { a->bar(); }
Если B — наследник А, и bar() объявлен как virtual, то вызовется реализация для B.

Александр
03.10.2018
12:16:16
Как связаны co_return и исключения?
SCOPE_SUCCESS и SCOPE_FAIL обычно делаются через std::uncaught_exceptions. В конструкторе запоминается количество активных исключений текущего потока, в деструкторе проверяется, не увеличилось ли оно.
std::uncaught_exceptions - это thread local счётчик.
Корутины позволяют начать вычисление в одном потоке, а продолжать исполнение в другом потоке.
Получаем замечательный код, который запоминает количество исключений одного потока, а проверят - по количеству исключений другого. И это может некоторое время даже производить впечатление работающего кода.

Ilia
03.10.2018
13:05:00

Igor
03.10.2018
13:37:29

Олег
03.10.2018
13:41:05

Igor
03.10.2018
13:43:01

Google

Александр
03.10.2018
15:14:44

Antony
03.10.2018
15:21:33
Хм.... надо автору написать, спросить, знает ли он про такой юзкейс

Chiveson
03.10.2018
15:40:11
какие есть побочные эффекты при использовании attribute packed, кроме скорости работы?

Max
03.10.2018
15:56:10

Igor
03.10.2018
16:35:45

Anatoly
03.10.2018
16:47:37

Roman
03.10.2018
16:50:48
const poisoning вам о чём-нибудь говорит? можно это как-то вменяемо объяснить? подобное объяснeние скорее путает чем разъясняет

Anatoly
03.10.2018
16:57:06
ты передаешь указатель на константную строку, а функция снимает эту константность и возращает неконстантный указатель

Roman
03.10.2018
16:58:13

Anatoly
03.10.2018
16:58:45

Roman
03.10.2018
16:59:31

Ioann V
03.10.2018
18:27:54
Ребята, а шесть точек после аргументов шаблона, что значЯт:?

Constantine
03.10.2018
18:28:22

Ioann V
03.10.2018
18:28:41
Да, Костику спасибо. Я просто не могу лить файлы :)

Александр
03.10.2018
18:28:55
это эквивалент _ArgTypes..., ...
pack expansion + ellipsis

Constantine
03.10.2018
18:30:46
okay

Google

Ioann V
03.10.2018
18:31:27

Александр
03.10.2018
18:32:17
аааа это типа a, b, c...?
запятую перед эллипсисом можно опускать, а так - это просто вариадик функция с последним эллипсис аргументом

Ioann V
03.10.2018
18:32:53
Ну, я простл конкретно такую объединенную запись впервой вижу.

Stanislav
03.10.2018
18:33:05
Why is this valild? We can see that , ... is synonymous with ... from the draft C++11 standard section 8.3.5 [dcl.fct] which has the following grammar:
parameter-declaration-clause:
parameter-declaration-listopt...opt
parameter-declaration-list , ...
and says:
[...] Where syntactically correct and where “...” is not part of an abstract-declarator, “, ...” is synonymous with “...”. [...]

Admin
ERROR: S client not available

Александр
03.10.2018
18:33:08
https://en.cppreference.com/w/cpp/error/current_exception
std::current_exception возвращает текущее исключение, которое обрабатывается.
С его помощью нельзя узнать, в результате исключения вызвался деструктор или штатно. Можно узнать только находимся ли мы сейчас в обработке исключения (внутри какого-либо catch).
Пример: https://wandbox.org/permlink/7ZJ9MxDqV2t1Rnco

Ignat
03.10.2018
18:33:38
1...42 в свичах gcc, значит, распарсить не может, а вот 6 точек подряд — запросто

Александр
03.10.2018
18:33:52
https://www.youtube.com/watch?v=ovxNM865WaU
MUST HAVE для просмотра.

Ioann V
03.10.2018
18:35:04
спасибо гайцы, пока вы есть - ноги мира могут спать спокойно!

Александр
03.10.2018
18:35:52
там про альтернативную реализацию std::is_function без перечисления всех https://i.imgur.com/Lhh0FGl.png

Constantine
03.10.2018
18:37:09

Александр
03.10.2018
18:37:24

Ioann V
03.10.2018
18:38:12
?

Александр
03.10.2018
18:38:15
вот еще забавный момент из презентации выше (кому лень смотреть): https://i.imgur.com/7hXxnZf.png

Aidar
03.10.2018
18:38:20

Александр
03.10.2018
18:38:45

Max
03.10.2018
18:42:09

Google

Constantine
03.10.2018
18:43:30

Yarique
03.10.2018
18:45:06
Ребят поскажите есть ли какая-либо идиома когда объединяют pure virtual функции и шаблонные методы вроде ISession из примера по ссылке ниже?
https://github.com/Belgorodsky/BoostAsioCppNetworkProgrammingCookbookDmitroRadchuk/blob/master/03_impl_client_apps/tcp_asynchronous.cpp

Constantine
03.10.2018
18:47:48

Max
03.10.2018
18:48:12

Yarique
03.10.2018
18:48:14

Constantine
03.10.2018
18:48:30

Yarique
03.10.2018
18:48:32

Constantine
03.10.2018
18:49:18
разумно. поправлю
в действительности еще ваши static_assert на вызовах просто ужасны, они не к месту написаны

Yarique
03.10.2018
18:50:33

Aidar
03.10.2018
18:50:48
И кажется боязнь/ненавистьк александреску

Constantine
03.10.2018
18:51:24

Yarique
03.10.2018
18:51:46

Constantine
03.10.2018
18:53:29