@ProCxx

Страница 2167 из 2477
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 - это пятница, и собирался идти на конфу Касперского только завтра. Ну, эх, чо

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

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
так и предупреждают же, не?

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?

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?

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

Страница 2167 из 2477