- 1
- 2
- 3
int i = 42;
foo(i); //не компилируется
foo(static_cast<int>(i)); //компилируется
Нашли или выдавили из себя код, который нельзя назвать нормальным, на который без улыбки не взглянешь? Не торопитесь его удалять или рефакторить, — запостите его на говнокод.ру, посмеёмся вместе!
+2
int i = 42;
foo(i); //не компилируется
foo(static_cast<int>(i)); //компилируется
raMagPuJI 05.03.2021 01:32 # 0
JloJle4Ka 05.03.2021 03:38 # 0
У int переопределён каст в инт?
JloJle4Ka 05.03.2021 07:07 # 0
MAKAKA 05.03.2021 13:35 # 0
bormand 05.03.2021 13:58 # +1
j123123 05.03.2021 06:08 # +1
j123123 05.03.2021 06:24 # +1
MAKAKA 05.03.2021 13:35 # 0
bormand 05.03.2021 08:50 # 0
А тьфу, ты же в инт и кастишь.
bormand 05.03.2021 08:53 # 0
JloJle4Ka 05.03.2021 08:54 # 0
bormand 05.03.2021 08:55 # +1
bormand 05.03.2021 09:10 # +3
MAKAKA 05.03.2021 13:34 # +3
можно привести и обратный пример убрав одну &.
И наконец анекдот
понятно да, что выведет?)
bormand 05.03.2021 13:46 # 0
Desktop 05.03.2021 13:55 # 0
JloJle4Ka 05.03.2021 13:55 # +1
bormand 05.03.2021 13:58 # 0
Desktop 05.03.2021 13:59 # 0
bormand 05.03.2021 14:01 # 0
MAKAKA 05.03.2021 14:03 # 0
bormand 05.03.2021 14:11 # 0
JloJle4Ka 05.03.2021 14:25 # 0
MAKAKA 05.03.2021 14:29 # 0
карповский
JloJle4Ka 05.03.2021 14:33 # 0
У меня другая цель.
Управлять компьютерами
MAKAKA 05.03.2021 14:39 # 0
я думал, ты меня поймеш
https://www.viva64.com/en/pvs-studio/
guest6 05.03.2021 14:49 # 0
JloJle4Ka 05.03.2021 14:07 # +2
И не будет неявного преобразования.
MAKAKA 05.03.2021 14:11 # 0
bormand 05.03.2021 14:11 # +1
Ок, и правда работает.
MAKAKA 05.03.2021 14:13 # +2
скомпилируй
а потом раскоментируй строчку
bormand 05.03.2021 14:17 # +1
MAKAKA 05.03.2021 14:19 # +1
По вумному конечно надо было назвать не delete, а deny, но это же С++
всё таки я за С++
и за Perl
и немного за Ruby
программирование должно быть нескучным
bormand 05.03.2021 14:24 # +1
JloJle4Ka 05.03.2021 14:23 # 0
Кресты уже почти как тайпскрипт!
MAKAKA 05.03.2021 14:25 # 0
JloJle4Ka 05.03.2021 14:27 # 0
MAKAKA 05.03.2021 14:32 # +1
всегда так делаю
Rooster 05.03.2021 14:24 # 0
JloJle4Ka 05.03.2021 14:30 # +1
guest6 05.03.2021 14:31 # +1
guest6 05.03.2021 14:27 # +1
j123123 05.03.2021 15:33 # 0
Rooster 06.03.2021 09:16 # 0
bormand 06.03.2021 09:51 # +1
Ну и для float потом точно так же.
Rooster 06.03.2021 10:21 # 0
bormand 06.03.2021 10:25 # +2
Большинство функций, которые принимают &&, это какие-нибудь мув-конструкторы, которые портят аргумент. Поэтому неявного каста из lvalue (переменной) в && нет.
Rooster 06.03.2021 10:46 # 0
Rooster 06.03.2021 10:48 # 0
bormand 06.03.2021 10:55 # +1
Rooster 06.03.2021 11:07 # 0
bormand 06.03.2021 11:45 # +1
foo(int(i)) например. Или какую-нибудь временную локалку мувни.
JloJle4Ka 06.03.2021 11:49 # 0
bormand 06.03.2021 11:53 # +1
MAKAKA 06.03.2021 12:33 # +1
Шарик в том числе и тем прекрасен, что можно не двигать сам объект. Объект лежит себе в куче, и в ус не дует.
guest6 06.03.2021 10:59 # 0
Rooster 06.03.2021 11:07 # 0
DypHuu_niBEHb 05.03.2021 13:36 # 0
MAKAKA 05.03.2021 13:41 # +1
я тут ващето
foo(i); //не компилируется птому что i (lvalue) не кастится имплистно в rvalue reference
//без мува
foo(static_cast<int>(i)); //компилируется бо временная хуйня кастица, она и так rvalue
DypHuu_niBEHb 05.03.2021 13:59 # 0
DypHuu_niBEHb 05.03.2021 09:49 # 0
MAKAKA 05.03.2021 13:30 # +2
DypHuu_niBEHb 05.03.2021 13:34 # +2
Desktop 05.03.2021 14:26 # 0
MAKAKA 05.03.2021 14:28 # +1
вон брмнд подсказывает
:~$ c++ -Wall 1.cpp
1.cpp: In function ‘int foo(int)’:
1.cpp:5:1: warning: no return statement in function returning non-void [-Wreturn-type]
}
bormand 05.03.2021 14:33 # 0
Desktop 05.03.2021 14:35 # 0
bormand 05.03.2021 14:36 # +1
Именно поэтому свежий код полагается писать с максимальным уровнем предупреждений.
Desktop 05.03.2021 14:45 # +1
bormand 05.03.2021 14:47 # +1
Это как писать на perl без use strict, а потом ругаться, что он любой мусор исполняет.
Desktop 05.03.2021 14:52 # +2
MAKAKA 05.03.2021 14:53 # +1
use warnings FATAL => 'all';
в JS тоже нужно "use strict";
а в TS --strict
много где нужно
MAKAKA 05.03.2021 14:41 # +3
bormand 05.03.2021 14:45 # 0
Desktop 05.03.2021 14:47 # +1
bormand 05.03.2021 14:48 # +1
В этом случае очевидно, что управление туда не попадёт и третий return не нужен. Но в более сложном случае с циклами и т.п. конпелятор часто тупит и просит написать.
guest6 05.03.2021 14:49 # 0
JloJle4Ka 05.03.2021 14:50 # 0
bormand 05.03.2021 14:51 # +2
Хотя и с одним случается... Тарас, помнится, тут что-то такое про паскаль постил.
Пишешь return -- "код недостижим". Убираешь return -- "не хватает ретурна". И ебись как хочешь.
MAKAKA 05.03.2021 14:56 # 0
throw new AssertionError("Can't be")
или
error() в случ коко
bormand 05.03.2021 15:12 # 0
Или в этих языках "код недостижим" в прицнипе нету?
Desktop 05.03.2021 15:19 # 0
bormand 05.03.2021 15:22 # +1
Desktop 05.03.2021 15:32 # 0
guest6 05.03.2021 15:33 # 0
guest6 05.03.2021 15:36 # 0
Desktop 05.03.2021 15:39 # +1
- любой запрет, невозможный с технической точки зрения, есть трата времени
bormand 05.03.2021 15:40 # +1
Desktop 05.03.2021 15:41 # 0
bormand 05.03.2021 15:59 # +1
Desktop 05.03.2021 16:09 # +2
MAKAKA 05.03.2021 17:02 # 0
Rooster 06.03.2021 11:01 # 0
CHayT 05.03.2021 19:24 # 0
Desktop 05.03.2021 19:38 # 0
CHayT 05.03.2021 19:42 # 0
Desktop 05.03.2021 19:43 # 0
CHayT 05.03.2021 19:50 # 0
В Gallina логического программирования в традиционном смысле нет (т.е. как в прологе), но с другой стороны, этот язык построен на конструктивистской логике по заветам тов. Martin-Löf.
В Ltac есть некое подобие логического программирования в традиционном смысле, там есть pattern-matching c бэктрекингом. (Ltac — это уровень метушни для Gallina.)
Rooster 05.03.2021 19:52 # 0
CHayT 05.03.2021 19:54 # +1
Desktop 05.03.2021 21:12 # 0
Rooster 05.03.2021 19:47 # 0
CHayT 05.03.2021 19:54 # +2
Rooster 05.03.2021 20:01 # 0
bormand 05.03.2021 20:08 # 0
CHayT 05.03.2021 21:13 # 0
bormand 05.03.2021 21:22 # 0
А вдруг он наинлайнил и узнал?
Rooster 06.03.2021 11:03 # 0
Desktop 05.03.2021 21:10 # 0
bormand 05.03.2021 21:22 # 0
Чтобы не прикручивать костыли в духе linq и не писать перебор вручную.
Desktop 05.03.2021 21:27 # 0
bootcamp_dropout 05.03.2021 21:36 # 0
разница примерно как между тем чтобы в css написать селектор и тем чтобы жсом ходить по нодам и добавлять и убирать стили
CHayT 05.03.2021 22:27 # 0
Desktop 05.03.2021 22:33 # 0
- Филимонов?
Desktop 05.03.2021 22:35 # 0
https://youtu.be/m3HnPEGLiDU?t=491
MAKAKA 05.03.2021 22:40 # 0
https://www.youtube.com/watch?v=nSj44Azbd3o
Desktop 05.03.2021 22:43 # 0
алсо, одного меня бесит, что на ютубе форвард/ревайнд на ёбаные десять секунд?
MAKAKA 05.03.2021 22:50 # 0
А эти вроде химкинские или долгопские
CHayT 05.03.2021 23:15 # 0
Вот его статья про backtracking на продолжениях: http://okmij.org/ftp/Computation/monads.html#LogicT
guest3 05.03.2021 23:40 # 0
p.s. ах да, это же Лем напейсал.
Rooster 06.03.2021 10:59 # 0
Desktop 06.03.2021 13:29 # 0
Именно поэтому я за
ru66oH4uk 08.03.2021 04:00 # +2
funcName := result
нет?
bormand 08.03.2021 11:40 # 0
Да. Но выглядит как ёбаный костыль, как-будто процедуре прикрутили невидимый аргумент по ссылке. А всё ради одновозвратности.
Rooster 08.03.2021 11:44 # 0
Завершается функция либо дойдя до конца, либо по exit.
Rooster 08.03.2021 11:44 # 0
MAKAKA 05.03.2021 17:03 # +2
есть, но в очень простых случаях
if (true) {
return;
}
int a = 1; //скорее всего может не скомпилирвоаться
JloJle4Ka 05.03.2021 19:22 # 0
guest6 05.03.2021 14:51 # +1
JloJle4Ka 05.03.2021 14:55 # 0
JloJle4Ka 05.03.2021 14:39 # 0
MAKAKA 05.03.2021 14:40 # +1
bormand 05.03.2021 14:40 # +2
Desktop 05.03.2021 15:02 # +1
bormand 05.03.2021 14:30 # +1
guest3 05.03.2021 23:40 # 0