
Anatoly
28.06.2018
15:57:43
как вам кажется, должен ли компилятор предупреждать о том, что конструктор класса b не будет вызывать конструктор a с тем параметром, который он передает:
struct a {
int i;
a(int i) : i(i) {std::cout << "a" << i;}
};
struct b : virtual a {
b() : a(10) {std::cout << "b" << i;}
};
struct c : b {
c() : a(20) {std::cout << "c";}
};
int main() {
struct c c;
}
?
по идее, при виртуальном наследовании компилятор должен предупредить, что тот конструктор виртуального класса, который используется в списке инициализации не обязательно будет вызван

Igor
28.06.2018
16:46:21
...алала, а я почему то был уверен что 28 - это пятница, и собирался идти на конфу Касперского только завтра. Ну, эх, чо

Alex
28.06.2018
16:50:36

Google

Dmitry
28.06.2018
18:28:32
А кто в проде конан пользует это же с локальным каким-то репозиторием, не с public? Artifactory например?

Никита
28.06.2018
20:20:36

Dmitry
28.06.2018
20:22:13
А рецепты копипастом или как?
Снэпшоты с исходниками по версиям наверное в том же artifactory?

Mikhail Voronov
28.06.2018
21:38:09
как вам кажется, должен ли компилятор предупреждать о том, что конструктор класса b не будет вызывать конструктор a с тем параметром, который он передает:
struct a {
int i;
a(int i) : i(i) {std::cout << "a" << i;}
};
struct b : virtual a {
b() : a(10) {std::cout << "b" << i;}
};
struct c : b {
c() : a(20) {std::cout << "c";}
};
int main() {
struct c c;
}
?
если ответить на этот вопрос положительно, то тогда встанет другой вопрос, например, а должен ли компилятор предупреждать, что объекты в классе инициализируются не так, как они указаны в списке инициализации а так, как в списке наследования и в полях класса. И если и тут да, то дальше, например, что при множественном наследовании сначала конструируются виртуально отнаследованные и т.д.

Aleksandr
28.06.2018
21:39:22
так и предупреждают же, не?

Fuzzytoozy
28.06.2018
21:39:32

Aleksandr
28.06.2018
21:39:40
о неверном порядке
шланг тоже

Mikhail Voronov
28.06.2018
21:39:53
я просто всегда строго стараюсь соблюдать порядок в списке инициализации, поэтому не в теме)

Aleksandr
28.06.2018
21:40:23
с флагами

Fuzzytoozy
28.06.2018
21:40:32
Угу

Google

Fuzzytoozy
28.06.2018
21:40:42
Но тем не менее

Mikhail Voronov
28.06.2018
21:40:48
наверняка у вижуалки тоже флаги на это есть
ну в общем, по моему мнению, без флагов компилятор не должен о таком предупреждать

Viacheslav
28.06.2018
21:46:12
А по-моему должен, особенно когда один проинициализированный член используется для инициализации другого.

Aleksandr
28.06.2018
21:47:33
ну это много лишней работы для компилятора, тут трейдофф между скоростю компиляции и пользой ворнингов

Dmitry
28.06.2018
21:56:49

Aleksandr
28.06.2018
21:57:36
тоже верно

Mikhail Voronov
28.06.2018
21:57:49
тут просто непонятно на каком уровне ошибок остановиться при компиляции без флагов

Dmitry
28.06.2018
21:58:21
-Werror -Wall
Ну может ещё -Wextra
И сверху clang-tidy заполировать :)

Properrr
28.06.2018
22:00:43
кстати, кто-то пилил правила для автоисправления warning-ов через tidy?

Dmitry
28.06.2018
22:01:48

Properrr
28.06.2018
22:03:16
Ох, я бы не доверял...
не спорю, но есть задача на 100500 “проблем”, хотел автоматизировать этот процесс, что бы потом поревьювить и замерджить

Dmitry
28.06.2018
22:06:41

Properrr
28.06.2018
22:07:17
ну, он не всё может

Dmitry
28.06.2018
22:09:15
О, он вообще чудеса умеет :) например заменять в шаблонах typedef на using используя первый попавшийся тип, в контексте которого он эту "проблему" обнаружил :)

Properrr
28.06.2018
22:10:00
например
for(int i = 0; i < vec.size(); i++ ){ vecA[i] = vecB[i * 2]; }
тут понятно: сравнение signed <—> unsigned…
автоисправить изи
а вот приведение float к int тут уже от контекста зависит
думал может кто-то писал правила(или плагин) для него

Google

Properrr
28.06.2018
22:10:55
что бы можно было пройтись и потыкать варианты с автопревью

Dmitry
28.06.2018
22:13:11
Ну это не совсем изи. Ибо заменив тип счётчика можно внутри цикла ещё больше проблем огрести.

Admin
ERROR: S client not available

Properrr
28.06.2018
22:17:36
ну и + сделать более глубокий анализ на предмет безопасности действий можно таки

Dmitry
28.06.2018
22:19:22
Ну for int ... size можно и регулярками "пофиксить" в студии например
А учитывая шаблонность подобного рода исправлений, в регулярках капчи есть.

PRoSToC0der
28.06.2018
22:56:09
используется ли std::launder под капотом у std::variant/std::optional?

Constantine
29.06.2018
00:58:47

Properrr
29.06.2018
01:05:17

Constantine
29.06.2018
01:06:37
size_t
for(int i = 0; i < a.size(); i++ ) { if (i - 1 >= 0) a[i - 1] += a[i]; }

Constantine
29.06.2018
01:07:46
и хорошо если warning: expression is always true

Maksymiljann
29.06.2018
01:29:14
?

Properrr
29.06.2018
02:04:47
Та не суть совершенно... это был «пример»

Никита
29.06.2018
04:35:21

Igor
29.06.2018
07:10:29
@zamazan4ik https://www.reddit.com/r/cpp/comments/8uq3hu/cppcast_sg15_tooling_group_with_titus_winters/?utm_source=reddit-android возможно будет интересно

Ilia
29.06.2018
09:43:04

Google

Anatoly
29.06.2018
09:46:55