
Alex Фэils?︙
30.08.2018
12:16:10

Spoonson
30.08.2018
12:16:52

Alex Фэils?︙
30.08.2018
12:16:53
т.е. это просто затыкивание дыры с форвард-декларацией хрени из пространства имен классов

Google

Spoonson
30.08.2018
12:19:10

Alex Фэils?︙
30.08.2018
12:19:54
н да, тогда же не происходит сбоя в подстановке

Andrey
30.08.2018
12:21:53
мне кажется, что удобно это или нет, но текущие правила — все декларации членов класса содержатся в его теле — поменять уже невозвможно. что-нибудь да порвется

Spoonson
30.08.2018
12:26:46
я так понимаю проблема тут в том что если класс неполный, то это будет immediate context, и выходит sfinae, а если проваливаемся в лукап, то уже не immediate и случается ошибка
можно сказать, что лукап в неполном классе это будет immediate context, но не факт что это единственный баг который вылезет

Ilia
30.08.2018
12:28:59

Andrey
30.08.2018
12:31:38
я так понимаю проблема тут в том что если класс неполный, то это будет immediate context, и выходит sfinae, а если проваливаемся в лукап, то уже не immediate и случается ошибка
Нет, почему же, enable_if<false> может быть не определен или определен пустым, и то и другое работает. Я же говорил о другом — если он не определен, то сейчас при попытке lookup'а сразу ошибка, теоретически, наверное, можно сделать так, чтобы lookup в нем возвращал пустое множество и так все sfinae трюки тоже работать будут.

Ilia
30.08.2018
12:31:42

Alex Фэils?︙
30.08.2018
12:32:00

Spoonson
30.08.2018
12:33:39

Ilia
30.08.2018
12:35:04

Andrey
30.08.2018
12:35:25

Google

Ilia
30.08.2018
12:35:47

Andrey
30.08.2018
12:35:51
У вас 2 функции с одинаковой сигнатурой, на самом деле это одна и та же функция

Ilia
30.08.2018
12:36:30

Denya
30.08.2018
12:36:45
Привет, можете посоветовать что-то для сборки проекта в линукс??/

Alex Фэils?︙
30.08.2018
12:36:52

Denya
30.08.2018
12:37:13
Так. А ещё что нибудь?/

Anton
30.08.2018
12:37:28

Denya
30.08.2018
12:38:01

Alex Фэils?︙
30.08.2018
12:38:13
А это?/
qmake ТОЧНО не соберет проект GTK

Denya
30.08.2018
12:38:43
Окей
Ну у меня с++ и гткмм

Egor
30.08.2018
12:39:09
гтк вроде на мезон переходили

Stanislav
30.08.2018
12:39:12

Alexander
30.08.2018
12:39:17
Привет, можете посоветовать что-то для сборки проекта в линукс??/
make, cmake, autotools, bazel, b2, meson, scons, qbs, qmake, gyp

Alex Фэils?︙
30.08.2018
12:39:40

Denya
30.08.2018
12:39:59

yuri
30.08.2018
12:40:17
...and autotools to rule them all...

Google

Spoonson
30.08.2018
12:56:37

Andrey
30.08.2018
13:02:56

Pavel
30.08.2018
13:04:48
а если у меня дефолтный конструктор, то, например, int член класса инициализируется в 0?

Max
30.08.2018
13:13:29

Igor
30.08.2018
13:14:28
за исключением тех случаев, когда класс инициализируется как myclass x{};, кажется

Andrey
30.08.2018
13:14:55
local uninitialized variables SHOULD NEVER be used ” – Unless you’re seeding a random number generator and using the uninitialised memory as an added source of entropy.
где-то встречалось

Pavel
30.08.2018
13:15:01
где то же оно инициализировалось в 0. с чем то я попутал...
ну ладно, спасибо

Andrey
30.08.2018
13:15:31

Побитый
30.08.2018
13:15:32

Spoonson
30.08.2018
13:16:06

Igor
30.08.2018
13:16:12
я про brace-initialization при котором даже примитивные типы забиваются нулями вроде

Ruslan
30.08.2018
13:17:24
не нулями, а default initialization

Nodir
30.08.2018
13:21:50

Ilia
30.08.2018
13:23:50

Evgeny
30.08.2018
13:26:07
есть ещё одна удобная штука на самом деле

A.D.
30.08.2018
13:26:31

Vlad
30.08.2018
13:26:32

Google

Evgeny
30.08.2018
13:26:38
ага :D

A.D.
30.08.2018
13:26:59
ну и ну! расскажи!

Ilia
30.08.2018
13:27:07
А cmake соберёт гткмм?
Если ты сам проект не пишешь, нахрена спрашивать чем его собирать?
Он собирается тем, чем решили его авторы

Дед Пегас
30.08.2018
13:28:02
харам*

Denya
30.08.2018
13:29:15

Evgeny
30.08.2018
13:29:51
ну если ты пишешь, то собирай с помощью CMake :D

Denya
30.08.2018
13:31:06
?

Aleksandr
30.08.2018
14:01:06

Andrey
30.08.2018
14:01:34

Aidar
30.08.2018
14:01:50

Spoonson
30.08.2018
14:02:56
насколько я понимаю, может быть похуже чем мусор. Если не было записи в переменную, то страница может быть не подгружена в память и т.д., вплоть до краша

Andrey
30.08.2018
14:04:47

Igor
30.08.2018
14:05:30
а ещё конпелятор может вывести, что в неинициализированной переменной может находиться какое-нибудь ровно одно значение, и соптимизирует все обращения к переменной до подстановки этого значения
https://godbolt.org/z/hm150H
https://kristerw.blogspot.com/2017/09/why-undefined-behavior-may-call-never.html

Matwey
30.08.2018
14:05:40
Может быть хуже - тебе нулем заинициализируют а ты и поверишь
На Лоре был тред
Gcc когда использует регистры под переменные - всегда их очищает

Igor
30.08.2018
14:05:47
так что неопределенное поведение на то и неопределенное

Matwey
30.08.2018
14:06:19
Коноплятор

Google

Igor
30.08.2018
14:06:30
да, тот самый который используется линуксоидами для конпеляции ведра

Matwey
30.08.2018
14:06:55
Для конопляции
Ну вообщем на мой вкус это худший вариант UB, который маскируется под требуемое поведение

Aleksandr
30.08.2018
14:13:35
там ещё был какой-то прикол, что значение "не инициализироовано" можно присваивать другим переменным для какого-то ограниченного списка типов. что-то в духе
int a;
int b = a;
и это ок, но b читать нельзя =)
наврал, с интом как раз нельзя. можно с unsigned char
https://en.cppreference.com/w/cpp/language/default_initialization

Eugene
30.08.2018
14:40:56
Я так всегда говорю)

Anatoly
30.08.2018
16:12:05
#meetup #spb https://www.meetup.com/St-Petersburg-CPP-User-Group/events/254171514/

Assasin
30.08.2018
16:30:19

Anatoly
30.08.2018
16:30:38

Assasin
30.08.2018
16:30:55
во, супер

Kotbegemot
30.08.2018
16:39:02