- 1
- 2
- 3
int i = 42;
foo(i); //не компилируется
foo(static_cast<int>(i)); //компилируется
Нашли или выдавили из себя код, который нельзя назвать нормальным, на который без улыбки не взглянешь? Не торопитесь его удалять или рефакторить, — запостите его на говнокод.ру, посмеёмся вместе!
0
int i = 42;
foo(i); //не компилируется
foo(static_cast<int>(i)); //компилируется
raMagPuJI # 0
JloJle4Ka # 0 ⇈
У int переопределён каст в инт?
JloJle4Ka # 0 ⇈
MAKAKA # 0 ⇈
bormand # 0 ⇈
j123123 # 0
j123123 # 0 ⇈
MAKAKA # 0 ⇈
bormand # 0
А тьфу, ты же в инт и кастишь.
bormand # 0
JloJle4Ka # 0 ⇈
bormand # 0 ⇈
bormand # 0
MAKAKA # 0 ⇈
можно привести и обратный пример убрав одну &.
И наконец анекдот
понятно да, что выведет?)
bormand # 0 ⇈
Desktop # 0 ⇈
JloJle4Ka # 0 ⇈
bormand # 0 ⇈
Desktop # 0 ⇈
bormand # 0 ⇈
MAKAKA # 0 ⇈
bormand # 0 ⇈
JloJle4Ka # 0 ⇈
MAKAKA # 0 ⇈
карповский
JloJle4Ka # 0 ⇈
У меня другая цель.
Управлять компьютерами
MAKAKA # 0 ⇈
я думал, ты меня поймеш
https://www.viva64.com/en/pvs-studio/
guest # 0 ⇈
JloJle4Ka # 0 ⇈
И не будет неявного преобразования.
MAKAKA # 0 ⇈
bormand # 0 ⇈
Ок, и правда работает.
MAKAKA # 0 ⇈
скомпилируй
а потом раскоментируй строчку
bormand # 0 ⇈
MAKAKA # 0 ⇈
По вумному конечно надо было назвать не delete, а deny, но это же С++
всё таки я за С++
и за Perl
и немного за Ruby
программирование должно быть нескучным
bormand # 0 ⇈
JloJle4Ka # 0 ⇈
Кресты уже почти как тайпскрипт!
MAKAKA # 0 ⇈
JloJle4Ka # 0 ⇈
MAKAKA # 0 ⇈
всегда так делаю
Rooster # 0 ⇈
JloJle4Ka # 0 ⇈
guest # 0 ⇈
guest # 0 ⇈
j123123 # 0 ⇈
Rooster # 0 ⇈
bormand # 0 ⇈
Ну и для float потом точно так же.
Rooster # 0 ⇈
bormand # 0 ⇈
Большинство функций, которые принимают &&, это какие-нибудь мув-конструкторы, которые портят аргумент. Поэтому неявного каста из lvalue (переменной) в && нет.
Rooster # 0 ⇈
Rooster # 0 ⇈
bormand # 0 ⇈
Rooster # 0 ⇈
bormand # 0 ⇈
foo(int(i)) например. Или какую-нибудь временную локалку мувни.
JloJle4Ka # 0 ⇈
bormand # 0 ⇈
MAKAKA # 0 ⇈
Шарик в том числе и тем прекрасен, что можно не двигать сам объект. Объект лежит себе в куче, и в ус не дует.
guest # 0 ⇈
Rooster # 0 ⇈
DypHuu_niBEHb # 0 ⇈
MAKAKA # 0 ⇈
я тут ващето
foo(i); //не компилируется птому что i (lvalue) не кастится имплистно в rvalue reference
//без мува
foo(static_cast<int>(i)); //компилируется бо временная хуйня кастица, она и так rvalue
DypHuu_niBEHb # 0 ⇈
DypHuu_niBEHb # 0
MAKAKA # 0 ⇈
DypHuu_niBEHb # 0 ⇈
Desktop # 0
MAKAKA # 0 ⇈
вон брмнд подсказывает
:~$ 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 # 0 ⇈
Desktop # 0 ⇈
bormand # 0 ⇈
Именно поэтому свежий код полагается писать с максимальным уровнем предупреждений.
Desktop # 0 ⇈
bormand # 0 ⇈
Это как писать на perl без use strict, а потом ругаться, что он любой мусор исполняет.
Desktop # 0 ⇈
MAKAKA # 0 ⇈
use warnings FATAL => 'all';
в JS тоже нужно "use strict";
а в TS --strict
много где нужно
MAKAKA # 0 ⇈
bormand # 0 ⇈
Desktop # 0 ⇈
bormand # 0 ⇈
В этом случае очевидно, что управление туда не попадёт и третий return не нужен. Но в более сложном случае с циклами и т.п. конпелятор часто тупит и просит написать.
guest # 0 ⇈
JloJle4Ka # 0 ⇈
bormand # 0 ⇈
Хотя и с одним случается... Тарас, помнится, тут что-то такое про паскаль постил.
Пишешь return -- "код недостижим". Убираешь return -- "не хватает ретурна". И ебись как хочешь.
MAKAKA # 0 ⇈
throw new AssertionError("Can't be")
или
error() в случ коко
bormand # 0 ⇈
Или в этих языках "код недостижим" в прицнипе нету?
Desktop # 0 ⇈
bormand # 0 ⇈
Desktop # 0 ⇈
guest # 0 ⇈
guest # 0 ⇈
Desktop # 0 ⇈
- любой запрет, невозможный с технической точки зрения, есть трата времени
bormand # 0 ⇈
Desktop # 0 ⇈
bormand # 0 ⇈
Desktop # 0 ⇈
MAKAKA # 0 ⇈
Rooster # 0 ⇈
CHayT # 0 ⇈
Desktop # 0 ⇈
CHayT # 0 ⇈
Desktop # 0 ⇈
CHayT # 0 ⇈
В Gallina логического программирования в традиционном смысле нет (т.е. как в прологе), но с другой стороны, этот язык построен на конструктивистской логике по заветам тов. Martin-Löf.
В Ltac есть некое подобие логического программирования в традиционном смысле, там есть pattern-matching c бэктрекингом. (Ltac — это уровень метушни для Gallina.)
Rooster # 0 ⇈
CHayT # 0 ⇈
Desktop # 0 ⇈
Rooster # 0 ⇈
CHayT # 0 ⇈
Rooster # 0 ⇈
bormand # 0 ⇈
CHayT # 0 ⇈
bormand # 0 ⇈
А вдруг он наинлайнил и узнал?
Rooster # 0 ⇈
Desktop # 0 ⇈
bormand # 0 ⇈
Чтобы не прикручивать костыли в духе linq и не писать перебор вручную.
Desktop # 0 ⇈
bootcamp_dropout # 0 ⇈
разница примерно как между тем чтобы в css написать селектор и тем чтобы жсом ходить по нодам и добавлять и убирать стили
CHayT # 0 ⇈
Desktop # 0 ⇈
- Филимонов?
Desktop # 0 ⇈
https://youtu.be/m3HnPEGLiDU?t=491
MAKAKA # 0 ⇈
https://www.youtube.com/watch?v=nSj44Azbd3o
Desktop # 0 ⇈
алсо, одного меня бесит, что на ютубе форвард/ревайнд на ёбаные десять секунд?
MAKAKA # 0 ⇈
А эти вроде химкинские или долгопские
CHayT # 0 ⇈
Вот его статья про backtracking на продолжениях: http://okmij.org/ftp/Computation/monads.html#LogicT
guest3 # 0 ⇈
p.s. ах да, это же Лем напейсал.
Rooster # 0 ⇈
Desktop # 0 ⇈
Именно поэтому я за
ru66oH4uk # 0 ⇈
funcName := result
нет?
bormand # 0 ⇈
Да. Но выглядит как ёбаный костыль, как-будто процедуре прикрутили невидимый аргумент по ссылке. А всё ради одновозвратности.
Rooster # 0 ⇈
Завершается функция либо дойдя до конца, либо по exit.
Rooster # 0 ⇈
MAKAKA # 0 ⇈
есть, но в очень простых случаях
if (true) {
return;
}
int a = 1; //скорее всего может не скомпилирвоаться
JloJle4Ka # 0 ⇈
guest # 0 ⇈
JloJle4Ka # 0 ⇈
JloJle4Ka # 0 ⇈
MAKAKA # 0 ⇈
bormand # 0 ⇈
Desktop # 0 ⇈
bormand # 0 ⇈
guest3 # 0 ⇈