
Ilia
07.06.2018
08:17:35
Кому не лень, дайте ссылу

Anatoly
07.06.2018
08:19:44

Ilia
07.06.2018
08:19:59
Да просил уже, не снимают...

Anatoly
07.06.2018
08:20:14

Google

Никита
07.06.2018
08:29:49
Где можно почитать за модули?
http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2014/n4047.pdf
http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2018/n4720.pdf
http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2018/p0947r1.html
http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2018/p0955r0.pdf

Simon
07.06.2018
08:31:12

Antony
07.06.2018
08:41:31
На этом заседании их скорее всего не будут обсуждать

Constantine
07.06.2018
08:43:03
О! https://godbolt.org/g/6VHoYp так кто не прав?
Подразумевает ли RVO неинстанцирование деструктора?
шансы ~65% что будут
и да, нет промежуточных решений? мне кажется, там достаточно, если по сути константы как макросы будут [им|экс]портироваться

Anatoly
07.06.2018
08:47:19

Constantine
07.06.2018
08:47:42
вызывающий точно обязан инстанцировать деструктор

Олег
07.06.2018
08:51:35
Привет. Подскажите, как работает switch.
Есть у меня, скажем, switch без default. Если туда приходит значение, которого нет среди case, то вроде бы ничего страшного — пропустим switch, пойдём дальше выполняться.
Но что если тип, по которому делается switch, — enum, а то и enum class? И при этом, все валидные значения разобраны в case, а другое получилось из-за ошибки в другом месте?
Может ли компилятор считать, что невалидное значение enum'а — это UB, и скомпилировать такой switch, например, в таблицу прыжков без проверки на переполнение?


Constantine
07.06.2018
08:53:18
Привет. Подскажите, как работает switch.
Есть у меня, скажем, switch без default. Если туда приходит значение, которого нет среди case, то вроде бы ничего страшного — пропустим switch, пойдём дальше выполняться.
Но что если тип, по которому делается switch, — enum, а то и enum class? И при этом, все валидные значения разобраны в case, а другое получилось из-за ошибки в другом месте?
Может ли компилятор считать, что невалидное значение enum'а — это UB, и скомпилировать такой switch, например, в таблицу прыжков без проверки на переполнение?
я могу сильно ошибаться, но enum / enum class не подразумевает ограничения на множество значений для underlying type, т.е. компилятор не имеет право считать, что значение ограничено enum-ом

Олег
07.06.2018
08:53:53
Вот мне тоже так казалось, но и я могу сильно ошибаться.

Antony
07.06.2018
08:57:38
О! https://godbolt.org/g/6VHoYp так кто не прав?
Это у меня в TODO. По идее там не должно быть вызова деструктора, так как сработает "guaranteed copy elision" и в добавок "The template parameter T of unique_ptr may be an incomplete type.". Кажется что инстанцироваться деструктор не должен. Но нужно перепроверить

Google

Олег
07.06.2018
08:58:40
Пошарил по интернету, вроде бы неправильное значение в enum может вызывать «всего лишь» unspecified behavior.

Constantine
07.06.2018
08:58:46
http://eel.is/c++draft/dcl.enum#8
http://eel.is/c++draft/dcl.enum#footnote-98

Antony
07.06.2018
09:04:40
Привет. Подскажите, как работает switch.
Есть у меня, скажем, switch без default. Если туда приходит значение, которого нет среди case, то вроде бы ничего страшного — пропустим switch, пойдём дальше выполняться.
Но что если тип, по которому делается switch, — enum, а то и enum class? И при этом, все валидные значения разобраны в case, а другое получилось из-за ошибки в другом месте?
Может ли компилятор считать, что невалидное значение enum'а — это UB, и скомпилировать такой switch, например, в таблицу прыжков без проверки на переполнение?
Подобная оптимизация была в GCC и её быстро откатили, так как она ломала пользовательский код.
Но есть другие оптимизации, которые позволяют преполагать, что switch содержит все возможные кейсы для энума и в этом случае оптимизация происходит https://gcc.gnu.org/bugzilla/show_bug.cgi?id=82404

Constantine
07.06.2018
09:05:39
http://eel.is/c++draft/expr.static.cast#10

Олег
07.06.2018
09:07:05
Спасибо!

Assasin
07.06.2018
09:48:37

Alex Фэils?︙
07.06.2018
10:45:21

Pavel
07.06.2018
10:45:39
https://github.com/grpc/grpc/blob/v1.12.x/examples/cpp/route_guide/route_guide_server.cc#L103
плчему в скобках?

Spoonson
07.06.2018
10:46:29
видимо чтоб не замакросилось

Alex Фэils?︙
07.06.2018
10:47:09
плчему в скобках?
Чтоб макро виндовый не сработал (от которого крест^W дефайн NOMINMAX спасает)

Pavel
07.06.2018
10:47:53
мдо
спасибо

Александр
07.06.2018
10:57:22
Как через std::is_detected проверить наличие точной сигнатуры функции без конвертации аргументов?
Пример:
void foo(int a);
template<class T>
using try_call_foo = decltype(foo(std::declval<T>()));
static_assert(std::is_detected_v<try_call_foo, int>); // ok
static_assert(std::is_detected_v<try_call_foo, short>); // ok, но мне нужно fail
Код: https://godbolt.org/g/ZHZ6Kk

Spoonson
07.06.2018
11:02:48

Александр
07.06.2018
11:03:31

Olesya
07.06.2018
11:17:29
привет. кто clion юзает - его можно как-то по ssh к серваку подключить, чтобы через него код отлаживать?
вроде как в эклипсе так можно.

Google

Pavel
07.06.2018
11:18:39
я не юзаю, но по ссх это странно, есть же gdbserver

Igor
07.06.2018
12:05:17

Max
07.06.2018
12:40:33
https://habr.com/post/328362/
хорошее обьяснение работы барьеров памяти

Oleg
07.06.2018
12:46:51
пиздец

Olesya
07.06.2018
12:47:07

Oleg
07.06.2018
12:47:18
С такими статьями можно диссеры писать, кмк

Alexander
07.06.2018
12:49:26

Igor
07.06.2018
12:50:37

Alexander
07.06.2018
12:51:42

Antony
07.06.2018
14:06:29
Не совсем новости, но всё же... Самые клёвые надписи на шмотках в комитете:
* My one line implementation of garbage collector:
}
*
future is_near() {
co_await "C++20";
}
* С??+

Constantine
07.06.2018
14:26:30

Alexander
07.06.2018
14:43:51
Ссылку прверил - там был мусор

Antony
07.06.2018
15:17:27
Му-ха-ха... В комитете сейчас constexpr virtual деструкторами балуются

Evgeniy
07.06.2018
15:18:17

Stanislav
07.06.2018
15:18:34

Kirill
07.06.2018
15:19:32

Antony
07.06.2018
15:20:02

Kirill
07.06.2018
15:20:11
литеральный тип это же тривиальный конструктор/деструктор
а констекспр требование - литеральный тип

Antony
07.06.2018
15:20:34
вы отстали от жизни

Kirill
07.06.2018
15:20:37
как оно вообще физически будет реализовано, я не понимаю концепцию

Google

Assasin
07.06.2018
15:20:41
а на модули уже забили?)

Alexey
07.06.2018
15:20:44
даешь constexpr для сокетов!

Antony
07.06.2018
15:20:53

Alexander
07.06.2018
15:21:03
тогда в компайл-тайме не будет никакой неопределённости

Antony
07.06.2018
15:22:22
да

Kirill
07.06.2018
15:22:43
работа с интерфейсами через раннее связывание, ну норм :D

Alexander
07.06.2018
15:23:18

Kirill
07.06.2018
15:23:20
приэтом с приятным синтаксисом, а не через шаблонны, было бы неплохо

Alexander
07.06.2018
15:23:50
кстати, на такое в либре через clang-tidy есть проверка. Если такой класс появился, то пишется, что мол дядь ты дурачок и не пиши так

Kirill
07.06.2018
15:23:56

Scarf
07.06.2018
15:24:30
virtuals

Alexander
07.06.2018
15:25:07
@antoshkka слышно что-нибудь по поводу constexpr! ?
и как там wide_integer?

Vyacheslav
07.06.2018
15:37:27

Max
07.06.2018
15:56:26
https://tproger.ru/news/coffee-algorithm/

Max
07.06.2018
15:58:15
опять 25
ну ничего щас к 20ому году опять констекспры напринимают в стандарт, "а модули ваши, да там сложно все"
похоже что языку нужен пожизненный диктатор

Google

Alexey
07.06.2018
16:00:19
Который бы разделил язык на два несовместимых между собою?

Владислав
07.06.2018
16:00:31
давно пора

Max
07.06.2018
16:01:03
С/С++ на С и на С++

Alexey
07.06.2018
16:01:38
На С и ++

Max
07.06.2018
16:01:53
не важно
чтобы не было разброда и шатания
как у линуса